我需要验证用户在MaskedTextBox
中输入的字符。哪些字符有效取决于已输入的字符。我已尝试使用IsInputChar
和OnKeyPress
,但无论我在IsInputChar
中返回false还是在OnKeyPress中将e.Handled
设置为true,框的文本仍设置为无效值
如何阻止按键更新MaskedTextBox
的文字?
更新:MaskedTextBox不是TextBox。我不认为这应该有所作为,但是从告诉我e.Handled
应该有效的人数来看,或许确实有效。
答案 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)