Maskedtextbox忽略e.Handled = true /如何防止输入

时间:2013-11-27 11:45:53

标签: c# winforms maskedtextbox

我有一个蒙面文本框(注意:没有正常的Texbox,我搜索了网页,发现只有与普通文本框相关的文章):

        this.maskedTextBox1 = new System.Windows.Forms.MaskedTextBox();
        this.maskedTextBox1.Location = new System.Drawing.Point(12, 30);
        this.maskedTextBox1.Mask = "??????????????????????????";   //Just as example
        this.maskedTextBox1.Name = "maskedTextBox1";
        this.maskedTextBox1.Size = new System.Drawing.Size(260, 20);
        this.maskedTextBox1.TabIndex = 0;
        this.maskedTextBox1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.maskedTextBox1_KeyPress);

我想阻止对casue的输入我想自己处理输入。问题是,这似乎是不可能的。 我试图将e.Handled设置为true,但它完全忽略了它。

private void maskedTextBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.Handled = true;
    }

有没有办法阻止输入屏蔽的texbox?也有人知道为什么设置e.Handled = trues没有效果吗?

非常感谢提前

2 个答案:

答案 0 :(得分:2)

您可以尝试KeyDown事件并设置SuppressKeyPress = true;

private void maskedTextBox1_KeyDown(object sender, KeyEventArgs e){    
   e.SuppressKeyPress = true;
}

答案 1 :(得分:-1)

我遇到了同样的问题。

private void maskedTextBox1_KeyDown(object sender, KeyEventArgs e){    
   e.SuppressKeyPress = true;
}

在这种情况下,您将获得关键扫描代码,其中还包括“移动”键。 我发现如果你使用普通的KeyPress函数,而不是设置:

e.Handled = true

然后

e.KeyChar = (char) 0x00;

现在你得到了你所要求的功能,我得到了我的

示例:(带分色的十六进制输入):

// mtxtBoxKey.Mask = @"CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC CC";

    private void mtxtBoxKey_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar >= 'a' && e.KeyChar <= 'f')
            e.KeyChar = (char)(e.KeyChar - ' ');
        if (!((e.KeyChar == 0x08) || (e.KeyChar >= '0' && e.KeyChar <= '9') || (e.KeyChar >= 'A' && e.KeyChar <= 'F')))
            e.KeyChar = (char) 0x00;
    }