vb.net教程之vb.net的Button控件
成都创新互联专注于大洼网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供大洼营销型网站建设,大洼网站制作、大洼网页设计、大洼网站官网定制、微信平台小程序开发服务,打造大洼网络公司原创品牌,更为您提供大洼网站排名全网营销落地服务。
vb.net的Button控件
Button(按钮)控件一般接受鼠标单击事件被用来启动、中断或结束一个进程(相当于Visual Basic以前版本的CommandButton控件)。单击Button控件时将调用已写入Click事件过程中的过程。Button控件在大多数Visual Basic应用程序中都会用到,用户可以单击按钮执行操作。单击时,按钮不仅能执行相应的操作,而且看起来与被按下和松开一样。Button控件在工具箱中的图标如图所示:
1.向窗体添加按钮
在应用程序中很可能要使用多个按钮。就象在其他容器控件上绘制按钮那样,从工具箱里把Button控件直接拖到窗体上即可。可用鼠标调整按钮的大小,也可通过设置Location(坐标,用来确定控件相对窗体左上方顶点的位置)和Size(大小,第一个参数代表宽度,第二个参数代表高度)属性进行调整。
2.设置按钮显示文本
可用Text属性改变按钮上显示的文本。设计时,可在控件的“属性窗口”中设置此属性。在设计时设置Text属性后将动态更新按钮文本。Text属性最多包含255个字符。若标题超过了命令按钮的宽度,则会折到下一行。但是,如果控件无法容纳其全部长度,则标题会被剪切。可以通过设置Font属性改变在命令按钮上显示的字体。
3.创建键盘快捷方式
可通过Text属性创建按钮的访问键快捷方式。为此,只需在作为访问键的字母前添加一个连字符()。例如,要为标题“Ok”创建访问键,应在字母“O”前添中连字符,于是得到“Ok”。运行时,字母“O”将带下划线,同时按Alt+O键就可执行单击按钮程序所执行的动作。
注意:如果不创建访问键,而又要使标题中包含连字符,应添加两个连字符()。这样,在标题中就只显示一个连字符。
4.选定按钮
运行时,可用鼠标或键盘通过下述方法选定按钮:
(1)用鼠标单击按钮;
(2)按Tab键,将焦点转移到按钮上,然后按Enter键选定按钮;
(3)按按钮的访问键([Alt+带有下划线的字母])。
5.Click事件
运行时单击按钮,将触发按钮的Click事件并执行写入Click事件过程中的代码,同时,单击按钮的过程也将生成MouseMove、MouseLeave、MouseDown和MouseUp等事件。如果要在这些相关事件中附加事件过程,则应确保操作不发生冲突。对控件的操作不同,这些事件过程发生的顺序也不同。Button控件的单击事件发生顺序为:
MouseMove→MouseDown→Click→MouseUp→MouseLeave
注意:如果用户试图双击按钮控件,则其中每一次单击都将分别处理;也即按钮控件不支持双击事件。
6.增强按钮的视觉效果
按钮控件象复选框和选项按钮一样,可通过Image属性设置Button控件上的图标以增强视觉效果,然后设置图标(图片)的属性:ImageAlign显示图标(图片)的位置。通过设置ImageIndex(图片在图片框中的索引)以及ImageList(图片框)则可实现如下的效果,比如要向按钮添加图标或位图,或者在单击、禁止控件时显示不同的图象等等。
窗口边框(FormBorderStyle)设为None,窗口(WindowState)设为Maximized,如果想让窗口背景透明,将窗口背景颜色和TransparencyKey设为同一种颜色,按钮用Label(标签)代替,背景设为Transparent,边框设为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
函数功能:该函数定义一个系统范围的热键。
函数原型:BOOL RegisterHotKey(HWND hWnd,intid,UINT fsModifiers,UINT vk);
参数:
hWnd:接收热键产生WM_HOTKEY消息的窗口句柄。若该参数NULL,传递给调用线程的WM_HOTKEY消息必须在消息循环中中进行处理。
id:定义热键的标识符。调用线程中的其他热键不能使用同样的标识符。应用功能程序必须定义一个0X0000-0xBFFF范围的值。一个共享的动态链接库(DLL)必须定义一个0xC000-0xFFFF范围的值伯GlobalAddAtom函数返回该范围)。为了避免与其他动态链接库定义的热键冲突,一个DLL必须使用GlobalAddAtom函数获得热键的标识符。
fsModifoers:定义为了产生WM_HOTKEY消息而必须与由nVirtKey参数定义的键一起按下的键。该参数可以是如下值的组合:
MOD_ALT:按下的可以是任一Alt键。MOD_CONTROL:按下的可以是任一Ctrl键。
MOD_SHIFT:按下的可以是任一Shift键。
MOD_WIN:按下的可以是任一Windows按键。
vk:定义热键的虚拟键码。
返回值:若函数调用成功,返回一个非O值。若函数调用失败,则返回值为0。若要获得更多的错误信息,可以调用GetLastError函数。
备注:当某键被接下时,系统在所有的热键中寻找匹配者。一旦找到一个匹配的热键,系统将把WM_HOTKEY消息传递给登记了该热键的线程的消息队列。该消息被传送到队列头部,因此它将在下一轮消息循环中被移去。该函数不能将热键同其他线程创建的窗口关联起来。
若为一热键定义的击键己被其他热键所定义,则RegisterHotKey函数调用失败。
若hWnd参数标识的窗口已用与id参数定义的相同的标识符登记了一个热键,则参数fsModifiers和vk的新值将替代这些参数先前定义的值。
若设置MOD_KEYUP位,则当发生键被按下或被弹起的事件时,窗口将发送WM_HOTKEY消息。
RegisterHotKey可以被用来在线程之间登记热键。
UnregisterHotKey
函数功能:该函数释放调用线程先前登记的热键。
函数原型:BOOL UnregisterHotKey(HWND hWnd,int id);
参数:
hWnd:与被释放的热键相关的窗口句柄。若热键不与窗口相关,则该参数为NULL。
id:定义被释放的热键的标识符。
返回值:若函数调用成功,返回值不为0。若函数调用失败,返回值为0。若要获得更多的错误信息,可以调用GetLastError函数。
1、首先定义所需要用到的常量
如图所示,在窗体代码后定义常量和API函数
代码如下:
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,我们可以根据返回的结果判断并提醒用户注册的情况。
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过程,响应热键并处理热键,这里是用来隐藏和显示程序主界面。
Protected Overrides Sub WndProc(ByRef m As Message)
If m.Msg = WM_HOTKEY Then
System.Diagnostics.Process.Start("C:\WINDOWS\system32\freecell.exe")'运行当空接龙游戏
End If
MyBase.WndProc(m)
End Sub
最后在关闭窗体的时候释放占用的热键,如果前面注册失败的话,则会出现释放失败的结果。
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")
如果要实现动态效果的话需要2个图片当Button1_MouseHover事件时也就是鼠标停留在button上的时候显示一个图片,当Button1_MouseLeave事件时,也就是鼠标离开button时显示原来的图片,这样就是动态的了.