遇到了這樣的問題,整理的網上資源
方法有:
1: 這裏要說一下,SendKeys方法,在vista以後的系統被提升了使用權限,要有管理員權限才能運行(一般的程序系統不建議使用,會出現系統錯誤):
if(e.KeyChar = '\r')SendKeys.Send("{TAB}");
2:把Form的KeyPreView設爲true,然後在Form的KeyPress中增加下列代碼即可:
private void Form1_KeyPress(object sender, KeyPressEventArgs e){this.SelectNextControl(this.ActiveControl, true, true, true, true);}其中,SelectNextControl方法的功能是激活下一個控件:其語法爲:public bool SelectNextControl(Control ctl, //起始控件bool forward, //如果爲 true 則在 Tab 鍵順序中前移;如果爲 false 則在 Tab 鍵順序中後移bool tabStopOnly, //true 表示忽略 TabStop 屬性設置爲 false 的控件;false 表示不忽略。bool nested, //是否搜索嵌套控件bool wrap //在到達最後一個控件之後是否從 Tab 鍵順序中第一個控件重新開始;)窗體的AcceptButton屬性將不能再設置。
3:
用nextControl.Focus();//nextControl 爲Control;
4:
Control.rocessTabKey(true);也可以實現
-------------------------------------解釋———————————
關於方法2 查了下MSDN,記錄如下:
C#
public bool SelectNextControl (
Control ctl,
bool forward,
bool tabStopOnly,
bool nested,
bool wrap
)
參數
ctl
從其上開始搜索的 Control。
forward
如果爲 true 則在 Tab 鍵順序中前移;如果爲 false 則在 Tab 鍵順序中後移。
tabStopOnly
true 表示忽略 TabStop 屬性設置爲 false 的控件;false 表示不忽略。
nested
true 表示包括嵌套子控件(子控件的子級);false 表示不包括。
wrap
true 表示在到達最後一個控件之後從 Tab 鍵順序中第一個控件開始繼續搜索;false 表示不繼續搜索。
返回值
如果控件已激活,則爲 true;否則爲 false。
備註
如果在 ControlStyles 中將控件的 Selectable 樣式位設置爲 true,且該控件包含在另一個控件中,並且其所有父控件都可見並已啓用,則
SelectNextControl 方法將激活 Tab 鍵順序中的下一個控件。
下面列表中的 Windows 窗體控件是不可選擇的。從該列表中的控件派生的控件也是不可選擇的。
Label
Panel
GroupBox
PictureBox
ProgressBar
Splitter
LinkLabel(當控件中沒有鏈接時)