不难的,vb.net的语言比vb的完整些而已.而且一样可以利用英文的理解方法理解vb.net的代码,相对来说,vb.net更容易.语法来看,vb多数是用缩写的,而vb.net是用完整的单词,更便于理解,而且API也简化了很多.
所以,vb转vb.net是很容易上手的.
如果大家用过<
首先新建一个EXE工程,再在窗体上拖几个Label控件,看看Label 的强大功能吧,原理就是利用Label来模拟一个按钮,但是首先要将Label控件的属性要调一下,
Name: LblBtn,
BorderStyle: 1,
Appearance: 0,
Private Const LBL_BACK_COLOR = HE0E0E0 '正常时Label控件的背景色
Private Const LBL_WHEN_MOUSE_MOVE = HC0C0C0 '鼠标移动时Label的背景色
再在Form的Load事件中输入以下内容
Private Sub Form_Load()
Dim Count As Integer
LblBtn(Count).BackColor=LBL_BACK_COLOR '初始化LblBtn的背景
Next Count
End Sub
然后再在LblBtn的MouseMove和MouseDown事件中来搞定剩余部分:
Private Sub LblBtn_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) '当鼠标按在LblBtn上时
LblBtn(Index).BackColor = LBL_WHEN_MOUSE_DOWN '临时改变LblBtn背景颜色
Private Sub LblBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) '鼠标在LblBtn上面移动时触发该事件
DoEvents '暂时将系统控制权教给系统
If Button Then Exit Sub '如果按钮被按下就退出该过程
If Count Index Then '如果按下的不是其它按钮
LblBtn(Index).BackColor = LBL_BACK_COLOR '将背景设为正常
Else
LblBtn(Index).BackColor = LBL_WHEN_MOUSE_MOVE '将背景设为鼠标移动的背景
End If
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
DoEvents
LblBtn(Count).BackColor=LBL_BACKCOLOR '恢复背景
End
本来利用Windows的消息系统来完成这一"艰巨"的任务最简单,可问题就来了,Label控件没有窗口句柄怎么办?可是此问题与题无关,写了会有骗稿费之:)
OK,Label控件就讲到这里,在来说说TextBox控件,
Appearance 0
BorderStyle 1
MutilLine True
千万不要设置ScrollBars属性,否则会影响效果
在Form的Load事件中初始化TextBox
Dim bkColor As Long
Text1.BackColor=bkColor
在Form和Text1的MouseMove事件中:
Text1.BorderStyle = 0
Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text1.BorderStyle = 1
可能各位看关玩过石器时代,一定会对里面的TextBox的效果感到很爽,VB还不是可以做到,有焦点的控件可以使用SetFocus方法来为其设置焦点,可是一个窗体上如果控件太多了,一个一个的用SetFocus是不是太傻了?这一节的主角就是--------API函数,
首先声明:
Private Type POINTAPI
x As Long
y As Long
End Type
但是这里的SetFocus会和控件的SetFocus会搞混淆,改改吧,
只要Alias指向的接口是对的前面的函数名称简直就是摆设,
在建立一个过程:
Public Function sSetFocus() As Long
Dim CPos As POINTAPI,Successfull As Boolean,hWnd As Long
Successfull =GetCursorPos(CPos)
If Not Successfull Then Exit Sub '如果未成功则退出该过程
hWnd=WindowFromPoint(CPos.x,CPos.y)
sSetFocus=nSetFocus(hWnd)
在窗体上放一个Timer控件,Interval 属性设为100,就是0.1秒,在Timer1控件的Timer事件中填入sSetFocus,在运行一下看看,效果怎么样?
还有
Public Const WM_NCLBUTTONDOWN = HA1 '表示非工作区左键按下
原理很简单,卸下鼠标追踪器后向Form发送一个移动窗体的消息,其实做到这一点的方法很多,但俺个人认为这一种最简单,添加一个过程:
Public Sub MoveForm(hWnd As Long)
ReleaseCapture
SendMessage hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0
在Form的MouseMove事件中:
If Button=vbLeftButton Then MoveForm hWnd'如果按下鼠标左键就移动窗体
台下的这位小姐又纳闷了,可是光秃秃的窗体没有了标题栏也不好看,俺要向这为小姐推荐俺的东东-ActiveX控件,ToolSign,需要的人可以写信给俺联系,
'一下声明是用在ToolSign的 AutoQuit属性的
Public Const EXIT_MESSAGE = 1 '由操作系统发送关闭消息
Public Const EXIT_CUSTOM = Not (EXIT_FORCE Or EXIT_MESSAGE) '自定义
将其注册后在部件栏中把e-Dogkid Studio Tools Sign打钩,添加到工具箱中,双击加入到窗体中,
在Form的Load事件中添加一下初始化代码:
With Sign1
.AutoQuit = EXIT_CUSTOM
.ParentsHWND = hWnd '填了此属性可以直接用ToolSign来移动窗体而不需要前面的代码
End With
Sign1的Click事件
Private Sub Sign1_Click()
End '关闭程序
在Form的Resize事件中添加一下代码:
Private Sub Form_Resize()
Sign1.Width = Width
如果想让窗体可以改变大小,可以修改一下属性
Caption ""
ControlBox False
实际情况如图
不知道各位看关见过爆炸试的窗体没有?,没有见过可以从俺要另外一个俺自己的ActiveX DLL,我的那个东东其实是给我的Software作运行库的,各位若不嫌弃,可以用用,注册后在工程-引用-e-Dogkid Runtime Library
然后在窗体Load事件中输入:
Private Sub Form_Load()
Dim System As e_Dogkid_Runtime_Library.System
Set System = New e_Dogkid_Runtime_Library.System
Show
Set System = Nothing
有个办法就是用图片直接当按钮,鼠标移到图上时显示一个图,鼠标移出图片时显示另一个图,按下时显示一个图 把图的Click事件当按钮的Click来用,松开鼠标时显示另一个图,我以前试过,效果不错,就是事件处理时比用按钮麻烦点,要写鼠标移入、移出、按下、松开的代码
作自定义控件.
或者当第三方控件.比如上
学习GDI+的知识,不使用系统默认的控件样式,自己写代码绘制外观
以上就是土嘎嘎小编为大家整理的vb.net漂亮界面相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!