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