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

时间:2009-03-13 11:26:25

标签: c# .net winforms maskedtextbox

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

如何阻止按键更新MaskedTextBox的文字?

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

3 个答案:

答案 0 :(得分: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。

HTH

答案 1 :(得分: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。

答案 2 :(得分:0)