我有一个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比我得到预期。
验证输入的值是否为字节类型的最佳方法是什么?
答案 0 :(得分:2)
问题是您在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
声明
答案 1 :(得分:1)
您可以处理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();
}
}
您可能还想处理粘贴命令: