在資料庫的項目中,一定會有輸入資料的Form。最令錄入人員頭痛的就是每填完一個資料後,要再操作滑鼠,或者另一隻手按一下Tab(不過還是很麻煩)。最人性化的就是:按斷行符號鍵(在小鍵盤內輸入只要一隻手就可以了),還可以用方向鍵控制。
第一步:Form的KeyPreview的屬性為True;
第二步:按照需要把TabIndex按順序設定;
第三步:編寫一個方法,代碼如下:
'---FocusMove Is Function Name-- '---ControlName Is the Control's Name Which you want to use --- Private Sub FocusMove()Sub FocusMove(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ControlName1.KeyPress, ControlName2.KeyPress If e.KeyChar = ChrW(13) Then '---SelectNextControl is a Function will be introduced next--- SelectNextControl(sender, True, True, True, False) End If End Sub |
SelectNextControl的說明來自MSDN:
啟用下一個控制項。
[Visual Basic] Public Function SelectNextControl( _ ByVal ctl As Control, _ ByVal forward As Boolean, _ ByVal tabStopOnly As Boolean, _ ByVal nested As Boolean, _ ByVal wrap As Boolean _ ) As Boolean [C#] public bool SelectNextControl( Control ctl, bool forward, bool tabStopOnly, bool nested, bool wrap ); [C++] public: bool SelectNextControl( Control* ctl, bool forward, bool tabStopOnly, bool nested, bool wrap ); [JScript] public function SelectNextControl( ctl : Control, forward : Boolean, tabStopOnly : Boolean, nested : Boolean, wrap : Boolean ) : Boolean; |
參數:
◆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(當控制項中沒有連結時)
要求:
平台:Windows 98,Windows NT 4.0,Windows ME,Windows 2000,Windows XP Home Edition,Windows XP Professional,Windows Server 2003系列
最後要注意的就是TabIndex的設定,如果控制項在GroupBox中,那麼GroupBox要在TabIndex的順序中,就是說,如果TextBox1在GroupBox1中,那麼GroupBox1.Index=1,TextBox1.Index=2。並且在SelectNextControld的參數nested=true,即可。還有一些細節大家在平時使用的時候還要多多注意的。