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

我需要验证用户在MaskedTextBox输入的字符。 哪些字符有效取决于已经输入的字符。 我已经尝试使用IsInputCharOnKeyPress ,但无论我在返回false IsInputChar或集e.Handled在对的OnKeyPress真,框的文本仍设置为无效值。

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

更新:MaskedTextBox不是TextBox。 我认为这不应该有所作为,但是从多少人告诉我e.Handled应该起作用,或许它确实有效。


这不会在文本框1中键入字符'x'。

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

编辑 :它也适用于MaskedTextBox。

HTH


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。


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

链接地址: http://www.djcxy.com/p/95957.html

上一篇: How do I prevent a keypress from updating a MaskedTextBox's text?

下一篇: Input handling in WinForm