我怎样才能的KeyDown确定⇧+ Tab键被按下。
private void DateTimePicker_BirthDate_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab && e.Modifiers == Keys.Shift)
{
//do stuff
}
}
不能工作,因为从来没有这两个键在同一秒按下完全相同。 你总是在第一移位,然后其他的..
我怎样才能的KeyDown确定⇧+ Tab键被按下。
private void DateTimePicker_BirthDate_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab && e.Modifiers == Keys.Shift)
{
//do stuff
}
}
不能工作,因为从来没有这两个键在同一秒按下完全相同。 你总是在第一移位,然后其他的..
它不能正常工作,因为从来没有这两个键在同一秒按下完全相同。
你说的没错,你的代码不工作,但你的理由是错误的。 问题是,Tab键具有特殊的意义-它使焦点发生改变。 事件处理程序没有被调用。
如果你使用一个不同的密钥,而不是标签 ,那么你的代码将正常工作。
如果你真的想改变Shift + Tab键为一个特定控制的行为,它可以通过重写完成ProcessCmdKey
但请记住,很多用户使用Tab键在表单中导航和更改这个项的行为可能会惹恼那些用户。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (DateTimePicker_BirthDate.Focused && keyData == (Keys.Tab | Keys.Shift))
{
MessageBox.Show("shift + tab pressed");
return true;
}
else
{
return base.ProcessCmdKey(ref msg, keyData);
}
}
如果你正在寻找一个按键组合(表,然后按住Shift键)如Ctrl K + d,你将不得不使用它是取自此修改示例MSDN社会 。
private StringBuilder _pressedKeys = new StringBuilder();
private void DateTimePicker_BirthDate_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab)
{
_pressedKeys.Append("Tab");
return;
}
if (e.Modifiers == Keys.Shift)
{
_pressedKeys.Append("Shift");
return;
}
if (_pressedKeys.ToString()."TabShift")
{
MessageBox.Show("It works!");
_pressedKeys.Clear();
}
else
{
_pressedKeys.Clear();
}
base.OnKeyDown(e);
}
第一钩的标签按键事件,然后在活动期间,检查Shift键的状态。 请记住,有两个shift键; 请务必检查他们两个。
这非常相关的职位说明如何检查修改键的状态:
如何检测当前按键?
编辑:另一个回答者谁应该得到公正的给予好评提供的见解是,Tab键的默认行为(变更控制焦点)必须被抑制。
你可以找到你的答案在这个岗位
这很简单。
你可以做的是,在文本框使用keyup事件
private void txtBox1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab && e.Shift == false) // TAB Key Pressed
{
}
if (e.KeyCode == Keys.Tab && e.Shift == true) // TAB + SHIFT Key Pressed
{
}
}
Or
Using this you can identify Any Key is press inside the form
//Add This code inside the Form_Load Event
private void Form1_Load(object sender, EventArgs e)
{
this.KeyUp += new System.Windows.Forms.KeyEventHandler(KeyPressEvent);
this.KeyPreview = true;
}
//Create this Custom Event
private void KeyPressEvent(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab && e.Shift == false) // TAB Key Pressed
{
}
if (e.KeyCode == Keys.Tab && e.Shift == true) // TAB + SHIFT Key Pressed
{
}
}
这很简单。
Using this you can identify Any Key is press inside the form
//Add This code inside the Form_Load Event
private void Form1_Load(object sender, EventArgs e)
{
this.KeyUp += new System.Windows.Forms.KeyEventHandler(KeyPressEvent);
this.KeyPreview = true;
}
//Create this Custom Event
private void KeyPressEvent(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab && e.Shift == false) // TAB Key Pressed
{
}
if (e.KeyCode == Keys.Tab && e.Shift == true) // TAB + SHIFT Key Pressed
{
}
}