验证输入是否为ListBox中的字母

时间:2017-10-09 08:34:37

标签: c# wpf textbox

我有一个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比我得到预期。

验证输入的值是否为字节类型的最佳方法是什么?

2 个答案:

答案 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();
    }
}

您可能还想处理粘贴命令:

Paste Event in a WPF TextBox