TextBox输入约束问题

时间:2011-09-21 15:01:04

标签: c# winforms textbox validation

我在文本框上有输入约束,它只接受int,直到它可以被Int64解析。问题是它清除了,因为他正在分配给String.Empty,但如果它不能被Int64解析,那么我想压制那个按键。我尝试将代码添加到我所拥有的keydown事件中,但它也会抑制Int键。

public static void SetInt64Input(Control tb)
    {
       tb.KeyDown += (sender, e) => {
        if (!IsIntKeyOrAlwaysAcceptableKey(e))
       //if not int key suppress it; Ex: A,B,.etc
            e.SuppressKeyPress = true;
       };
       tb.TextChanged += (s, e) => ClearAllNonInt64Inputs(tb);

    }

    private static void ClearAllNonInt64Inputs(Control tb)
    {
        long i;
        if (!Int64.TryParse(tb.Text, out i))
            tb.Text = String.Empty;
        else
            tb.Text =  Int64.Parse(tb.Text).ToString();
    }

我试过

 if(!Int64.TryParse(((TextBox)sender).Text,out junk)
    e.SuppressKeyPress = true;

但它有效。

1 个答案:

答案 0 :(得分:0)

我不确定这个问题是什么。 但是如果由于Int64的长度超过(超过4个字节)而无法解析输入,那么我认为限制文本框中的字符数可能会有所帮助。如果由于非整数值而无法解析,那么使用IsNotDigit函数将对keypress事件有所帮助。