Winform中實現TAB鍵的功能

遇到了這樣的問題,整理的網上資源
方法有:
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(當控件中沒有鏈接時)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章