vb.net教程之vb.net的Button控件
成都創(chuàng)新互聯(lián)專注于大洼網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供大洼營銷型網(wǎng)站建設(shè),大洼網(wǎng)站制作、大洼網(wǎng)頁設(shè)計、大洼網(wǎng)站官網(wǎng)定制、微信平臺小程序開發(fā)服務(wù),打造大洼網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供大洼網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
vb.net的Button控件
Button(按鈕)控件一般接受鼠標單擊事件被用來啟動、中斷或結(jié)束一個進程(相當(dāng)于Visual Basic以前版本的CommandButton控件)。單擊Button控件時將調(diào)用已寫入Click事件過程中的過程。Button控件在大多數(shù)Visual Basic應(yīng)用程序中都會用到,用戶可以單擊按鈕執(zhí)行操作。單擊時,按鈕不僅能執(zhí)行相應(yīng)的操作,而且看起來與被按下和松開一樣。Button控件在工具箱中的圖標如圖所示:
1.向窗體添加按鈕
在應(yīng)用程序中很可能要使用多個按鈕。就象在其他容器控件上繪制按鈕那樣,從工具箱里把Button控件直接拖到窗體上即可??捎檬髽苏{(diào)整按鈕的大小,也可通過設(shè)置Location(坐標,用來確定控件相對窗體左上方頂點的位置)和Size(大小,第一個參數(shù)代表寬度,第二個參數(shù)代表高度)屬性進行調(diào)整。
2.設(shè)置按鈕顯示文本
可用Text屬性改變按鈕上顯示的文本。設(shè)計時,可在控件的“屬性窗口”中設(shè)置此屬性。在設(shè)計時設(shè)置Text屬性后將動態(tài)更新按鈕文本。Text屬性最多包含255個字符。若標題超過了命令按鈕的寬度,則會折到下一行。但是,如果控件無法容納其全部長度,則標題會被剪切??梢酝ㄟ^設(shè)置Font屬性改變在命令按鈕上顯示的字體。
3.創(chuàng)建鍵盤快捷方式
可通過Text屬性創(chuàng)建按鈕的訪問鍵快捷方式。為此,只需在作為訪問鍵的字母前添加一個連字符()。例如,要為標題“Ok”創(chuàng)建訪問鍵,應(yīng)在字母“O”前添中連字符,于是得到“Ok”。運行時,字母“O”將帶下劃線,同時按Alt+O鍵就可執(zhí)行單擊按鈕程序所執(zhí)行的動作。
注意:如果不創(chuàng)建訪問鍵,而又要使標題中包含連字符,應(yīng)添加兩個連字符()。這樣,在標題中就只顯示一個連字符。
4.選定按鈕
運行時,可用鼠標或鍵盤通過下述方法選定按鈕:
(1)用鼠標單擊按鈕;
(2)按Tab鍵,將焦點轉(zhuǎn)移到按鈕上,然后按Enter鍵選定按鈕;
(3)按按鈕的訪問鍵([Alt+帶有下劃線的字母])。
5.Click事件
運行時單擊按鈕,將觸發(fā)按鈕的Click事件并執(zhí)行寫入Click事件過程中的代碼,同時,單擊按鈕的過程也將生成MouseMove、MouseLeave、MouseDown和MouseUp等事件。如果要在這些相關(guān)事件中附加事件過程,則應(yīng)確保操作不發(fā)生沖突。對控件的操作不同,這些事件過程發(fā)生的順序也不同。Button控件的單擊事件發(fā)生順序為:
MouseMove→MouseDown→Click→MouseUp→MouseLeave
注意:如果用戶試圖雙擊按鈕控件,則其中每一次單擊都將分別處理;也即按鈕控件不支持雙擊事件。
6.增強按鈕的視覺效果
按鈕控件象復(fù)選框和選項按鈕一樣,可通過Image屬性設(shè)置Button控件上的圖標以增強視覺效果,然后設(shè)置圖標(圖片)的屬性:ImageAlign顯示圖標(圖片)的位置。通過設(shè)置ImageIndex(圖片在圖片框中的索引)以及ImageList(圖片框)則可實現(xiàn)如下的效果,比如要向按鈕添加圖標或位圖,或者在單擊、禁止控件時顯示不同的圖象等等。
窗口邊框(FormBorderStyle)設(shè)為None,窗口(WindowState)設(shè)為Maximized,如果想讓窗口背景透明,將窗口背景顏色和TransparencyKey設(shè)為同一種顏色,按鈕用Label(標簽)代替,背景設(shè)為Transparent,邊框設(shè)為None,文字位置一般是下中,Label控件支持無邊框。
動感效果在鼠標事件(MouseDown按下,MouseUp抬起,MouseEnter進入,MouseLeave離開)更換指定的圖片;
添加timer控件還可以使用動畫
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Label1.Refresh()
End Sub
快捷鍵用熱鍵
RegisterHotKey
函數(shù)功能:該函數(shù)定義一個系統(tǒng)范圍的熱鍵。
函數(shù)原型:BOOL RegisterHotKey(HWND hWnd,intid,UINT fsModifiers,UINT vk);
參數(shù):
hWnd:接收熱鍵產(chǎn)生WM_HOTKEY消息的窗口句柄。若該參數(shù)NULL,傳遞給調(diào)用線程的WM_HOTKEY消息必須在消息循環(huán)中中進行處理。
id:定義熱鍵的標識符。調(diào)用線程中的其他熱鍵不能使用同樣的標識符。應(yīng)用功能程序必須定義一個0X0000-0xBFFF范圍的值。一個共享的動態(tài)鏈接庫(DLL)必須定義一個0xC000-0xFFFF范圍的值伯GlobalAddAtom函數(shù)返回該范圍)。為了避免與其他動態(tài)鏈接庫定義的熱鍵沖突,一個DLL必須使用GlobalAddAtom函數(shù)獲得熱鍵的標識符。
fsModifoers:定義為了產(chǎn)生WM_HOTKEY消息而必須與由nVirtKey參數(shù)定義的鍵一起按下的鍵。該參數(shù)可以是如下值的組合:
MOD_ALT:按下的可以是任一Alt鍵。MOD_CONTROL:按下的可以是任一Ctrl鍵。
MOD_SHIFT:按下的可以是任一Shift鍵。
MOD_WIN:按下的可以是任一Windows按鍵。
vk:定義熱鍵的虛擬鍵碼。
返回值:若函數(shù)調(diào)用成功,返回一個非O值。若函數(shù)調(diào)用失敗,則返回值為0。若要獲得更多的錯誤信息,可以調(diào)用GetLastError函數(shù)。
備注:當(dāng)某鍵被接下時,系統(tǒng)在所有的熱鍵中尋找匹配者。一旦找到一個匹配的熱鍵,系統(tǒng)將把WM_HOTKEY消息傳遞給登記了該熱鍵的線程的消息隊列。該消息被傳送到隊列頭部,因此它將在下一輪消息循環(huán)中被移去。該函數(shù)不能將熱鍵同其他線程創(chuàng)建的窗口關(guān)聯(lián)起來。
若為一熱鍵定義的擊鍵己被其他熱鍵所定義,則RegisterHotKey函數(shù)調(diào)用失敗。
若hWnd參數(shù)標識的窗口已用與id參數(shù)定義的相同的標識符登記了一個熱鍵,則參數(shù)fsModifiers和vk的新值將替代這些參數(shù)先前定義的值。
若設(shè)置MOD_KEYUP位,則當(dāng)發(fā)生鍵被按下或被彈起的事件時,窗口將發(fā)送WM_HOTKEY消息。
RegisterHotKey可以被用來在線程之間登記熱鍵。
UnregisterHotKey
函數(shù)功能:該函數(shù)釋放調(diào)用線程先前登記的熱鍵。
函數(shù)原型:BOOL UnregisterHotKey(HWND hWnd,int id);
參數(shù):
hWnd:與被釋放的熱鍵相關(guān)的窗口句柄。若熱鍵不與窗口相關(guān),則該參數(shù)為NULL。
id:定義被釋放的熱鍵的標識符。
返回值:若函數(shù)調(diào)用成功,返回值不為0。若函數(shù)調(diào)用失敗,返回值為0。若要獲得更多的錯誤信息,可以調(diào)用GetLastError函數(shù)。
1、首先定義所需要用到的常量
如圖所示,在窗體代碼后定義常量和API函數(shù)
代碼如下:
Public Const WM_HOTKEY As Integer = H312
Public Const MOD_ALT As Integer = H1
Public Const MOD_CONTROL As Integer = H2
Public Const MOD_SHIFT As Integer = H4
Public Const GWL_WNDPROC As Integer = (-4)
Public Declare Auto Function RegisterHotKey Lib "user32.dll" Alias "RegisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer, ByVal fsModifiers As Integer, ByVal vk As Integer) As Boolean
Public Declare Auto Function UnRegisterHotKey Lib "user32.dll" Alias "UnregisterHotKey" (ByVal hwnd As IntPtr, ByVal id As Integer) As Boolean
下面過程是注冊Ctrl+T的組合鍵為組合鍵,假如注冊成功,則返回true,反之注冊失敗則返回false,我們可以根據(jù)返回的結(jié)果判斷并提醒用戶注冊的情況。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim isResult As Boolean
isResult=RegisterHotKey(Handle, 0, MOD_CONTROL, Asc("T")) ’注冊Ctrl+T的組合鍵
If isResult = False Then
MsgBox("注冊熱鍵Ctrl+T失敗")
End If
End Sub
[apge]
下面過程為重載WndProc過程,響應(yīng)熱鍵并處理熱鍵,這里是用來隱藏和顯示程序主界面。
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_HOTKEY Then
System.Diagnostics.Process.Start("C:\WINDOWS\system32\freecell.exe")'運行當(dāng)空接龍游戲
End If
MyBase.WndProc(m)
End Sub
最后在關(guān)閉窗體的時候釋放占用的熱鍵,如果前面注冊失敗的話,則會出現(xiàn)釋放失敗的結(jié)果。
Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
Dim isResult As Boolean
isResult=UnRegisterHotKey(Handle, 0)
End Sub
雙擊打開指定的程序
Private Sub Label1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.DoubleClick
System.Diagnostics.Process.Start("C:\WINDOWS\system32\freecell.exe")
End Sub
System.Diagnostics.Process.Start("路徑")打開指定程序
先列出這些吧
'在窗體上添加一個按鈕測試
Private
m_PlayFlag
As
Boolean
=
False
'是否正在播放
Private
Sub
Button1_Click(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
Button1.Click
If
m_PlayFlag
=
False
Then
Button1.Image
=
Image.FromFile("d:\play.jpg")
'更換為播放圖標
m_PlayFlag
=
True
'改變標志
Else
Button1.Image
=
Image.FromFile("d:\pause.jpg")
'更換為暫停圖標
m_PlayFlag
=
False
'改變標志
End
If
End
Sub
Private
Sub
Form1_Load(ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
MyBase.Load
'窗體加載時使用暫停圖標
Button1.Image
=
Image.FromFile("d:\pause.jpg")
End
Sub
用Button控件就可以了 修改BackgroundImage 屬性 類似這樣
Button1.BackgroundImage = Image.FromFile("C:\Users\hp\Desktop\EMOTICONS\EMOTICON SMILE.png")
如果要實現(xiàn)動態(tài)效果的話需要2個圖片當(dāng)Button1_MouseHover事件時也就是鼠標停留在button上的時候顯示一個圖片,當(dāng)Button1_MouseLeave事件時,也就是鼠標離開button時顯示原來的圖片,這樣就是動態(tài)的了.