【发布时间】:2009-07-02 23:09:05
【问题描述】:
我正在对文本框的 KeyPress 事件执行一个方法,但该方法正在运行在键实际输入到框中。
如果我使用 KeyUp,我会得到我正在寻找的行为,除了软键上的 KeyUp 触发器以及标准字符,这对我来说不是特别有用。
我可以让 KeyPress 在将密钥输入框中后运行吗?或者我可以轻松让 KeyUp 忽略软键吗?
【问题讨论】:
我正在对文本框的 KeyPress 事件执行一个方法,但该方法正在运行在键实际输入到框中。
如果我使用 KeyUp,我会得到我正在寻找的行为,除了软键上的 KeyUp 触发器以及标准字符,这对我来说不是特别有用。
我可以让 KeyPress 在将密钥输入框中后运行吗?或者我可以轻松让 KeyUp 忽略软键吗?
【问题讨论】:
好吧,您可以在 KeyPress 事件中记住 keychar,并使用记住的字符在 KeyUp 中执行所有必要的逻辑。
【讨论】:
在您的按键事件中,您可以将textbox.Text 和e.KeyChar 连接成一个新字符串并处理这个新字符串。
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string newString = textBox1.Text + e.KeyChar.ToString();
// Process newString
// If after processing you do not wish to undo the typed letter do
// e.Handled = true;
}
【讨论】:
将 keyUp 与 as 代码一起使用:
private void textBox1_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
//only do things when an alphabetical character is typed
if ((e.KeyCode >= Keys.a) && (e.KeyCode <= key.z) ||
(e.KeyCode >= Keys.A) && (e.KeyCode <= key.Z))
{
// do your thing
}
}
您当然也可以检查其他字符,例如 .等等
【讨论】:
您也可以从textbox 控件尝试TextChanged 事件。
【讨论】: