文本框输入约束问题

本文关键字:问题 约束 输入 文本 | 更新日期: 2023-09-27 18:09:09

我对文本框有输入约束,它只接受int,直到它可以被Int64解析。问题是它被清除了因为他赋值给String。空的,但如果它不是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();
    }

i tried doing

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

文本框输入约束问题

我不知道你的问题是什么,对不起。但如果输入是不可解析的,由于其长度的Int64(超过4字节),那么我认为限制字符的数量在文本框可能会有所帮助。如果由于非整数值而无法解析,则在按键事件中使用IsNotDigit函数将很有帮助。