快速掌握VB.NET Command1用法
我們的項(xiàng)目到最后都是給用戶看的,我們?nèi)缋镉?VB.NET設(shè)計(jì)更好的用戶界面呢?這是個值得討論的問題。有時在一個窗口中出現(xiàn)較多的控制件時,如果能向?qū)降亟ㄗh用戶下一步該做什么,不失為上策。在Visual Basic的程序設(shè)計(jì)中,我們可以使用語句:Object.SetFaocus使我們希望的控件得到輸入焦點(diǎn),舉個例子:在Form1中我們加入一個按鈕VB.NET Command1和一個文本輸入Text1,雙擊按鈕控件,然后鍵入如下代碼:
- Text1.SetFocus
#T#再按F5運(yùn)行程序,您就會看到一單擊按鈕,文本框會立即取得輸入焦點(diǎn)。另外,我們還可以使用語句:Sendkeys "{TAB}"使下一個控件獲得焦點(diǎn),但我們需要在設(shè)計(jì)時確定各控件的Index值。(在Properties窗口中)讓控件自己感知自己的工作已完成,而主動將焦點(diǎn)讓出,會使用戶覺得應(yīng)用程序很聰明,也減少了用戶出錯的機(jī)會??墒钱?dāng)焦點(diǎn)切換的兩個控件相隔有一定距離時,上述的方法有時也不足以引起用戶的注意,那么一種好的解決方法是將鼠標(biāo)箭頭也移到控件上??上?,VB并不支持鼠標(biāo)移動,那我們就求助API函數(shù),API函數(shù)SetCursorPos可讓我們?nèi)缭浮?/P>
下面是子程序MoveCursorOn,它可讓鼠標(biāo)移動到指定控件上方。
- Type PoinTAPI
- x As Integer
- y As Integer
- End Type
- Declare Sub SetCursorPos Lib "User"(Byval x As Integer,Byval y As Integer)
- Declare Sub ClientToScreen Lib "User"(Byval hwnd As Integer,IpPoint As PointAPI)
- Declare Function GetParent Lib "User"(Byval hwnd As Integer)As Integer
下列代碼請放在declarations段中然后建立一個新的子程序(ALT+N→N→鍵入子程序名MoveCursorOn),下面是子程序的代碼:
- Sub MoveCursorOn(source As Control)
- Dim Pt As PoinTAPI
- Dim hparent As Integer
- p.x=(Source.Left+Source.Width/2)/Screen.Twipsperpixel)
- p.y=(Source.Top+Source.Height/2)/Screen.Twipsperpixel)
- hparent=GetParent(source.hwnd)
- ClientToScreen hparent pt
- SetCursorPos pt.x pt.y
- End Sub
使用該子程序很容易,例如我們想把鼠標(biāo)移動到按鈕VB.NET Command1上,就可使用語句
- Move Cursor On Command1
#T#您會看到鼠標(biāo)箭頭已經(jīng)指著按鈕VB.NET Command1。需要說明的是,千萬不要濫用該子程序。讓鼠標(biāo)自己滿屏亂飛,我們的用戶會感到失去對應(yīng)用程序的控制,這是違反我們的初衷的。在有數(shù)個輸入框的窗口中(這在數(shù)據(jù)庫應(yīng)用程序中是很典型的),當(dāng)用戶完成第一個輸入框的輸入后,總愛習(xí)慣性的加一個回車,希望輸入焦點(diǎn)落到下一個輸入框中(DOS中大多數(shù)應(yīng)用程序是如此),可往往事與愿違,這一回車卻觸發(fā)了擁有Default特性的按鈕,結(jié)果不是關(guān)閉了當(dāng)前窗口就是又蹦出另一窗口。用戶睜大眼睛看著屏幕,“咦?!我到底做了什么?”這是Windows新用戶經(jīng)常遇到的事情。
解決它其實(shí)很容易,只需在輸入框的KeyPress事件中加入如下代碼:
- IF KeyASCII=13 Then
- KeyASCII=0
- Sendkeys "{TAB}"
- END IF
這樣,當(dāng)用戶在這個輸入框中鍵入Enter時,就象鍵入TAB鍵時,焦點(diǎn)被移到下一控件上。但需注意,這種方法不適用于多行的TextBox,即TextBox的MultiLine特性設(shè)為True時,因?yàn)檫@時的回車鍵是起換行的作用。