C# - 在 WinForm 中讓 Enter 鍵變成 Tab 鍵

摘要:C# - 在 WinForm 中讓 Enter 鍵變成 Tab 鍵

在 WinForm 中為了配合使用者的操作習慣,會讓 Enter 鍵擁有 Tab 鍵的功能。這功能有兩種寫法,如下:

第一種:使用 Form 的 KeyDown 事件來完成

Code:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
 if (e.KeyCode == Keys.Enter)
 {
  SendKeys.Send("{Tab}");
 }
}

第二種:複寫 ProcessCmdKey 事件

Code:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
 if (keyData == Keys.Enter)
 {
  SendKeys.Send("{TAB}");
  return true;
 }
 return base.ProcessCmdKey(ref msg, keyData);
}

呆言呆語:在使用上,第二種方式會比較穩定,因為小呆實際使用的結果發現,第一種方式的寫法在與「MessageBox」及「Focus()」一起運用時,會出現無限「MessageBox」的問題,所以小呆比較建議使用第二種方式。

參考:
Form.ProcessCmdKey 方法
Control.ProcessCmdKey 方法
ContainerControl.ProcessCmdKey 方法
在Winform中,怎麼使我鍵入的Enter鍵變成Tab鍵?
在WinForm中回車鍵(enter)和Esc鍵的設置
關於C#的Form_KeyPress和ProcessCmdKey
焦點問題!!高手請進!!ProcessCmdKey事件!!