1

我需要验证用户在MaskedTextBox. 哪些字符有效取决于已输入的字符。我试过使用IsInputCharand OnKeyPress,但是无论我在 OnKeyPress 中返回 falseIsInputChar还是设置e.Handled为 true,框的文本仍然设置为无效值。

如何防止按键更新 aMaskedTextBox的文本?

更新:MaskedTextBox 不是 TextBox。我不认为这应该有所作为,但从告诉我e.Handled应该有效的人数来看,也许确实有效。

4

3 回答 3

4

这不会在 textbox1 中键入字符“x”。

    char mychar='x'; // your particular character
    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == mychar)
            e.Handled = true;
    }

编辑:它也适用于 MaskedTextBox。

高温高压

于 2009-03-13T11:29:58.963 回答
0

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.keydown.aspx可能有帮助,KeyDown 事件?

于 2009-03-13T11:32:01.407 回答
0

应该这样KeyPress做;你在表格上这样做吗?还是在控制?例如:

static void Main() {
    TextBox tb = new TextBox();
    tb.KeyPress += (s, a) =>
    {
        string txt = tb.Text;
        if (char.IsLetterOrDigit(a.KeyChar)
            && txt.Length > 0 &&
            a.KeyChar <= txt[txt.Length-1])
        {
            a.Handled = true;
        }
    };
    Form form = new Form();
    form.Controls.Add(tb);
    Application.Run(form);
}

(只允许“升序”字符)

请注意,这不会保护您免受复制/粘贴 - 您可能还需要查看 TextChanged 和/或 Validate。

于 2009-03-13T11:31:18.133 回答