use*_*327 11 .net c# textbox winforms
我正试图检测一下Tab按键TextBox.我知道,Tab键不会触发KeyDown,KeyUp或KeyPress事件.我发现:在互联网上检测BlackWasp的Windows窗体中的Tab键.他们建议覆盖我所做的ProcessCmdKey,但它也不会被触发.有没有可靠的方法来检测Tab键按键?
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
bool baseResult = base.ProcessCmdKey(ref msg, keyData);
if (keyData == Keys.Tab && textBox_AllUserInput.Focused)
{
MessageBox.Show("Tab key pressed.");
return true;
}
if (keyData == (Keys.Tab | Keys.Shift) && textBox_AllUserInput.Focused)
{
MessageBox.Show("Shift-Tab key pressed.");
return true;
}
return baseResult;
}
Run Code Online (Sandbox Code Playgroud)
根据Cody Gray的建议,我改变了代码如下:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Tab && textBox_AllUserInput.Focused)
{
MessageBox.Show("Tab key pressed."); }
if (keyData == (Keys.Tab | Keys.Shift) && textBox_AllUserInput.Focused)
{
MessageBox.Show("Shift-Tab key pressed."); }
return base.ProcessCmdKey(ref msg, keyData);
}
Run Code Online (Sandbox Code Playgroud)
问题是它没有捕获Tab键按下.
Rez*_*aei 14
一些按键,比如TAB,RETURN,ESC和箭头键,通常是由一些控件,因为它们不被认为是输入按键被忽略.
您可以处理PreviewKeyDown控件事件以处理这些击键并将其设置为输入键.
private void textBox1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if(e.KeyData == Keys.Tab)
{
MessageBox.Show("Tab");
e.IsInputKey = true;
}
if (e.KeyData == (Keys.Tab | Keys.Shift))
{
MessageBox.Show("Shift + Tab");
e.IsInputKey = true;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 0
您可以使用下面的代码来确定何时按下 TAB 键:
private void input_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
// Check here tab press or not
if (e.KeyCode == Keys.Tab)
{
// our code here
}
// Check for the Shift Key as well
if (Control.ModifierKeys == Keys.Shift && e.KeyCode == Keys.Tab) {
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21678 次 |
| 最近记录: |