C# - 如何阻止在按键时输入字母?
C# - How can I block the typing of a letter on a key press?
我有一个带有 OnKeyPress 事件的文本框。在这个文本框中,我希望只输入数字,对于一些特定的字母,如 t 或 m,我想在文本框中不输入该字母的情况下执行代码。我正在尝试做的小样本:
//OnKeyPressed:
void TextBox1KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.T || e.KeyCode == Keys.M) Button1Click(this, EventArgs.Empty);
}
不幸的是,这不会阻止字母的输入..
将 KeyEventArgs 中的 SuppressKeyPress 属性 设置为 true,如下所示:
private void TextBox1KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.T || e.KeyCode == Keys.M)
{
e.SuppressKeyPress = true;
Button1Click(this, EventArgs.Empty);
}
}
您始终可以 运行 keyDown 事件上的 TryParse,以便在输入数据时进行验证。它为用户节省了额外的 UI 次交互。
private void TextBox1KeyDown(object sender, KeyEventArgs e)
{
int i;
string s = string.Empty;
s += (char)e.KeyValue;
if (!(int.TryParse(s, out i)))
{
e.SuppressKeyPress = true;
}
else if(e.KeyCode == Keys.T || e.KeyCode == Keys.M)
{
e.SuppressKeyPress = true;
Button1Click(this, EventArgs.Empty);
}
}
我有一个带有 OnKeyPress 事件的文本框。在这个文本框中,我希望只输入数字,对于一些特定的字母,如 t 或 m,我想在文本框中不输入该字母的情况下执行代码。我正在尝试做的小样本:
//OnKeyPressed:
void TextBox1KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.T || e.KeyCode == Keys.M) Button1Click(this, EventArgs.Empty);
}
不幸的是,这不会阻止字母的输入..
将 KeyEventArgs 中的 SuppressKeyPress 属性 设置为 true,如下所示:
private void TextBox1KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.T || e.KeyCode == Keys.M)
{
e.SuppressKeyPress = true;
Button1Click(this, EventArgs.Empty);
}
}
您始终可以 运行 keyDown 事件上的 TryParse,以便在输入数据时进行验证。它为用户节省了额外的 UI 次交互。
private void TextBox1KeyDown(object sender, KeyEventArgs e)
{
int i;
string s = string.Empty;
s += (char)e.KeyValue;
if (!(int.TryParse(s, out i)))
{
e.SuppressKeyPress = true;
}
else if(e.KeyCode == Keys.T || e.KeyCode == Keys.M)
{
e.SuppressKeyPress = true;
Button1Click(this, EventArgs.Empty);
}
}