this.KeyPress += new KeyPressEventHandler(TabbedTextBox_KeyPress);
void TabbedTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '.')
{
e.Handled = true;
var nextControl = this.Parent.GetNextControl(this, forward: true);
nextControl.Focus();
}
}
好的,这里有更多细节。
这可行,但“。”显示在文本框控件中(不需要)
this.KeyDown += new KeyEventHandler(TabbedTextBox_KeyDown);
}
void TabbedTextBox_KeyDown(object sender, KeyEventArgs e)
{
//MessageBox.Show("Event: " + e.KeyCode.ToString());
if (e.KeyCode == Keys.Decimal || e.KeyCode == Keys.OemPeriod)
{
var nextControl = this.Parent.GetNextControl(this, forward: true);
nextControl.Focus();
}
}
当我使用这个事件处理程序时,我无法绑定到e.keycode,因为它在上下文中不存在
this.KeyPress += new KeyPressEventHandler(TabbedTextBox_KeyPress);
void TabbedTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
//MessageBox.Show("KeyPress Event: " + e.KeyChar.ToString());
if (e.KeyChar == (char)Keys.Decimal || e.KeyChar == (char)Keys.OemPeriod)
{
MessageBox.Show("KeyPress Captured: " + e.KeyChar.ToString());
}
}
我试图抓住“。”按下键,因为我创建了一个具有IP地址的表单,我想在“。”时自动选项卡。键是按下的。当我按下“。”时,第一个消息框显示此消息。无论是在小键盘上还是在ALT键上方,但从未进入我已经尝试过的if语句
if (e.KeyChar == (char)Keys.Decimal)
和
if (e.KeyChar == (char)Keys.OemPeriod)
消息框显示了这一点 KeyPress活动:。
我似乎无法弄清楚什么是道具代码.... 我一直试图从msdn Keys Enumeration
中弄明白 void TabbedTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show("KeyPress Event: " + e.KeyChar.ToString());
if (e.KeyChar == (char)Keys.Decimal)
{
MessageBox.Show("KeyPress Captured: " + e.KeyChar.ToString());
}
}
由于 杰森
答案 0 :(得分:4)
不要混淆虚拟键码和字符。在KeyPress事件中,您将获得由活动键盘布局从虚拟键转换的实际字符。因此:
if (e.KeyChar == '.') {
MessageBox.Show("Period detected");
}
答案 1 :(得分:3)
而不是e.KeyChar
尝试使用e.KeyCode
另外
if ((e.KeyCode == Keys.Decimal) || (e.Keyode == Keys.OemPeriod)) {
//execute tabbing code
}
答案 2 :(得分:0)
你正在寻找的是OemPeriod吗?我相信十进制键是。在小键盘上。