簡體   English   中英

驗證輸入是否為ListBox中的字母

[英]Validating if input is a letter in ListBox

我有一個Textbox元素,我只想接受字節值。 請注意,我是C#的新手,如果我遺漏了一些明顯的內容,請抱歉。

所以我有這段代碼

  if (!byte.TryParse(last, out num) && last.Length > 1)
        {

            System.Media.SystemSounds.Asterisk.Play();
            zBox.Text = zBox.Text.Remove(last.Length - 1);

        }

因此,我想要的是用戶僅在其中輸入字節值,以及除數字以外的任何其他要忽略的內容(刪除並播放聲音表示輸入錯誤)。 那里的代碼段實現了第一個輸入值可以是字母的問題。 如果我不使用.length> 1,那么我會得到一個期望。

驗證輸入的值是否為字節類型的最佳方法是什么?

問題是您要在if語句中檢查這兩個條件,因此無論第一個字母是否為字節,檢查都不會成功。 嘗試類似:

byte num;
if (!byte.TryParse(last, out num))
{
    System.Media.SystemSounds.Asterisk.Play();
    if (last.Length > 1)
        zBox.Text = zBox.Text.Remove(last.Length - 1);
    else if (last.Length == 1)
        zBox.Text = "";
}

閱讀評論后進行編輯:添加else if語句

您可以處理PreviewTextInput事件:

private void TextBox_PreviewTextInput(object sender, TextCompositionEventArgs e)
{
    TextBox tb = sender as TextBox;
    string s = tb.Text + e.Text;
    byte b;
    if (!byte.TryParse(s, out b))
    {
        e.Handled = true;
        //play sound
        System.Media.SystemSounds.Asterisk.Play();
    }
}

您可能還需要處理paste命令:

在WPF文本框中粘貼事件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM