vb.net高檔界面 vb界面介紹

在vb.net 2003上美化界面

現(xiàn)在越來越多的軟件都有了很Cool的2D造型,什么×××× XP啦,×××× 2002之類的,看來爭奪軟件霸權(quán)的地位,2D界面是必不可少的,有很多人認(rèn)為Visual Basic語言的先天不足導(dǎo)致它不能夠很靈活的改變界面,讓俺們來看看究竟吧。

成都創(chuàng)新互聯(lián)專注于網(wǎng)站建設(shè)|網(wǎng)站建設(shè)維護(hù)|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋混凝土泵車等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身定制品質(zhì)網(wǎng)站。

如果大家用過《Windows優(yōu)化大師》,肯定會被它的界面所傾倒,其實(shí)利用ActiveSkin 就可以辦到,甚至更爽,但是如果要做的共享軟件只是一個文件,在加上幾個OCX累贅,似乎很是不爽,看看VB是怎么利用別的東東來實(shí)現(xiàn)的吧。

首先新建一個EXE工程,再在窗體上拖幾個Label控件,看看Label 的強(qiáng)大功能吧,原理就是利用Label來模擬一個按鈕,但是首先要將Label控件的屬性要調(diào)一下,

Name: LblBtn,

BorderStyle: 1,

Appearance: 0,

Alignment: 2,

這樣一個按鈕的雛形就已經(jīng)出來了,如果工程量很大,可以將多個Label控件的Name屬性設(shè)為一樣的,對于按鈕的識別就要靠識別Index屬性了,為了方便起見,在進(jìn)入到代碼編輯窗口,輸入以下代碼:

Private Const LBL_BACK_COLOR = HE0E0E0 ’正常時Label控件的背景色

Private Const LBL_WHEN_MOUSE_MOVE = HC0C0C0 ’鼠標(biāo)移動時Label的背景色

Private Const LBL_WHEN_MOUSE_DOWN = H808080 ’鼠標(biāo)按下時Label的背景色

再在Form的Load事件中輸入以下內(nèi)容

Private Sub Form_Load()

Dim Count As Integer

For Count = 0 To 3 ’請將此出的3換成你的LblBtn數(shù)量的個數(shù)-1

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) ’當(dāng)鼠標(biāo)按在LblBtn上時

LblBtn(Index).BackColor = LBL_WHEN_MOUSE_DOWN ’臨時改變LblBtn背景顏色

End Sub

Private Sub LblBtn_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single) ’鼠標(biāo)在LblBtn上面移動時觸發(fā)該事件

Dim Count As Integer

DoEvents ’暫時將系統(tǒng)控制權(quán)教給系統(tǒng)

If Button Then Exit Sub ’如果按鈕被按下就退出該過程

For Count = 0 To 3

If Count Index Then ’如果按下的不是其它按鈕

LblBtn(Index).BackColor = LBL_BACK_COLOR ’將背景設(shè)為正常

Else

LblBtn(Index).BackColor = LBL_WHEN_MOUSE_MOVE ’將背景設(shè)為鼠標(biāo)移動的背景

End If

Next Count

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim Count As Integer

DoEvents

For Count=0 To 3

LblBtn(Count).BackColor=LBL_BACKCOLOR ’恢復(fù)背景

Next Count

End

本來利用Windows的消息系統(tǒng)來完成這一“艱巨”的任務(wù)最簡單,可問題就來了,Label控件沒有窗口句柄怎么辦?可是此問題與題無關(guān),寫了會有騙稿費(fèi)之:)

OK,Label控件就講到這里,在來說說TextBox控件,

各位看關(guān)恐怕看慣了白顏色的背景,那么就換換顏色以養(yǎng)養(yǎng)俺們那和綿羊一樣的眼睛(為什么說綿羊?俺也不知道),可是VB提供的RGB函數(shù)弄出來的顏色不是怎么好看,這里俺來教大家一個小Tip,RGB函數(shù)的Red,Green,Blue這三個參數(shù)若一樣,則產(chǎn)生的顏色是灰度,當(dāng)然越接近白顏色越好,但也不能讓各位看不出來,俺建議TextBox的背景為RGB(235,235,235),各位還是實(shí)戰(zhàn)一下,將一個TextBox拖到窗體上,屬性設(shè)置如下

Appearance 0

BorderStyle 1

MutilLine True

千萬不要設(shè)置ScrollBars屬性,否則會影響效果

在Form的Load事件中初始化TextBox

Dim bkColor As Long

Private Sub Form_Load()

bkColor=RGB(235,235,235)

Text1.BackColor=bkColor

End Sub

在Form和Text1的MouseMove事件中:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Text1.BorderStyle = 0

End Sub

Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

DoEvents

Text1.BorderStyle = 1

End Sub

在按下F5試試是不是很Cool?

可能各位看關(guān)玩過石器時代,一定會對里面的TextBox的效果感到很爽,VB還不是可以做到,有焦點(diǎn)的控件可以使用SetFocus方法來為其設(shè)置焦點(diǎn),可是一個窗體上如果控件太多了,一個一個的用SetFocus是不是太傻了?這一節(jié)的主角就是--------API函數(shù),

首先聲明:

Private Type POINTAPI

x As Long

y As Long

End Type

Private Declare Function GetCursorPos Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long

Private Declare Function WindowFromPoint Lib "user32" Alias "WindowFromPoint" (ByVal xPoint As Long, ByVal yPoint As Long) As Long

Private Declare Function SetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long

但是這里的SetFocus會和控件的SetFocus會搞混淆,改改吧,

Private Declare Function nSetFocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long

只要Alias指向的接口是對的前面的函數(shù)名稱簡直就是擺設(shè),

在建立一個過程:

Public Function sSetFocus() As Long

Dim CPos As POINTAPI,Successfull As Boolean,hWnd As Long

DoEvents

Successfull =GetCursorPos(CPos)

If Not Successfull Then Exit Sub ’如果未成功則退出該過程

hWnd=WindowFromPoint(CPos.x,CPos.y)

sSetFocus=nSetFocus(hWnd)

End Sub

在窗體上放一個Timer控件,Interval 屬性設(shè)為100,就是0.1秒,在Timer1控件的Timer事件中填入sSetFocus,在運(yùn)行一下看看,效果怎么樣?

可是有的先生小姐要問了,TextBox難道就不能用ScrollBar嗎?非也非也,選 工程-部件-Microsoft Windows Common Controls-2 6.0 (SP3)就是你的答案,至于卷動TextBox就去研究SendMessage函數(shù)吧,否則又有騙稿費(fèi)之嫌,如果想作綠色軟件,不想用控件,可以用俺前面講到的Label控件,利用字體 Webdings 來模擬ScrollBar,需要注意的是,如果模擬ScrollBar,上下左右箭頭分別是5,6,3,4,別忘了把字體設(shè)為Webdings

再來講講窗體的美化,其實(shí)將BorderStyle屬性設(shè)為0就是很好的2D美化;)可是,這樣一來,問題又來了,怎么辦?凡事都要請API來幫忙,這里需要兩個API,一下是該API的聲明:

Public Declare Function ReleaseCapture Lib "user32" Alias "ReleaseCapture" () As Long '這個API是用來解下鼠標(biāo)的追蹤器,關(guān)于他的過多用法以及詳細(xì)介紹可以寫信向俺咨詢,

還有

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long’這個該不要俺多介紹了吧

Public Const HTCAPTION = 2 ’代表窗體的標(biāo)題區(qū)

Public Const WM_NCLBUTTONDOWN = HA1 ’表示非工作區(qū)左鍵按下

原理很簡單,卸下鼠標(biāo)追蹤器后向Form發(fā)送一個移動窗體的消息,其實(shí)做到這一點(diǎn)的方法很多,但俺個人認(rèn)為這一種最簡單,添加一個過程:

Public Sub MoveForm(hWnd As Long)

DoEvents

ReleaseCapture

SendMessage hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0

End Sub

在Form的MouseMove事件中:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

If Button=vbLeftButton Then MoveForm hWnd’如果按下鼠標(biāo)左鍵就移動窗體

End Sub

臺下的這位小姐又納悶了,可是光禿禿的窗體沒有了標(biāo)題欄也不好看,俺要向這為小姐推薦俺的東東-ActiveX控件,ToolSign,需要的人可以寫信給俺聯(lián)系,

該控件需要在代碼編輯區(qū)域內(nèi)添加一下代碼:

’一下聲明是用在ToolSign的 AutoQuit屬性的

Public Const EXIT_FORCE = 2 ’注意,在VB中運(yùn)行的時候如果選用此退出方式,VB也會退出

Public Const EXIT_MESSAGE = 1 ’由操作系統(tǒng)發(fā)送關(guān)閉消息

Public Const EXIT_CUSTOM = Not (EXIT_FORCE Or EXIT_MESSAGE) ’自定義

將其注冊后在部件欄中把e-Dogkid Studio Tools Sign打鉤,添加到工具箱中,雙擊加入到窗體中,

在Form的Load事件中添加一下初始化代碼:

Private Sub Form_Load()

With Sign1

.AutoQuit = EXIT_CUSTOM

.ParentsHWND = hWnd ’填了此屬性可以直接用ToolSign來移動窗體而不需要前面的代碼

End With

End Sub

Sign1的Click事件

Private Sub Sign1_Click()

End ’關(guān)閉程序

End Sub

在Form的Resize事件中添加一下代碼:

Private Sub Form_Resize()

Sign1.Width = Width

End Sub

如果想讓窗體可以改變大小,可以修改一下屬性

Caption ""

BorderStyle 2或5

ControlBox False

實(shí)際情況如圖

不知道各位看關(guān)見過爆炸試的窗體沒有?,沒有見過可以從俺要另外一個俺自己的ActiveX DLL,我的那個東東其實(shí)是給我的Software作運(yùn)行庫的,各位若不嫌棄,可以用用,注冊后在工程-引用-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

System.BoomIt hDC, 60, Width, Height, Left, Top

Set System = Nothing

End Sub

關(guān)于vb.net界面美化

學(xué)習(xí)GDI+的知識,不使用系統(tǒng)默認(rèn)的控件樣式,自己寫代碼繪制外觀

用VB.NET設(shè)計(jì)各種形狀的窗體界面二

結(jié)合上一節(jié)介紹的方法 通過Visual Basic Net的菜單設(shè)計(jì)器 按照圖 和圖 所示的菜單結(jié)構(gòu)設(shè)計(jì)菜單   圖 【MDI編程】項(xiàng)目的菜單結(jié)構(gòu)之一   圖 【MDI編程】項(xiàng)目的菜單結(jié)構(gòu)之二 在利用菜單設(shè)計(jì)器設(shè)計(jì)完菜單后 分別在窗體中雙擊 新建 退出 層疊顯示 橫行平鋪 縱向平鋪 和 排列圖標(biāo) 菜單項(xiàng) 這樣Visual Basic Net會在Form vb文件中分別產(chǎn)生這些菜單項(xiàng)的Click事件對應(yīng)的處理代碼 設(shè)定Form 的 IsMdiContainer 屬性值為 True 這把Form 窗體定義為MDI窗體容器 這一步設(shè)置是后面編程的基礎(chǔ) 當(dāng)設(shè)置此屬性值后 Form 的窗體也發(fā)生了改變 圖 是設(shè)置此屬性后的窗體模樣   圖 把Form 窗體設(shè)置為MDI窗體容器后的模樣 選中圖 中的 窗口 菜單項(xiàng) 并設(shè)置此菜單項(xiàng)的 MdiList 屬性值為 True 其作用是當(dāng)程序運(yùn)行后 如果新建了一個MDI窗體 就會在 窗口 菜單項(xiàng)后 自動加入一個以新建MDI窗體名稱命名的菜單項(xiàng) 如果新建了多個MDI窗體 則會在 窗口 菜單項(xiàng)后 會加入以這些MDI窗體名稱命名的菜單項(xiàng) 當(dāng)MDI窗體被關(guān)閉 那些以此MDI窗體命名的菜單項(xiàng)也會自動刪除 具體可圖 所示 把Visua Basic Net的當(dāng)前窗口切換到Form vb的代碼編輯窗口 并在定義Form 中組件的代碼區(qū)加入下列代碼 下列代碼是定義一個變量 此變量用以統(tǒng)計(jì)程序中新建MDI窗體的數(shù)量 Private iFormCount As Integer = 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 新建 菜單項(xiàng) 下列代碼的作用是在新建一個MDI窗體 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickDim frmTemp As Form = New Form ( ) 新建一個窗體frmTemp MdiParent = Me 為當(dāng)前創(chuàng)建的窗體設(shè)置MDI父窗體frmTemp Text = MDI窗體 + iFormCount ToString ( )iFormCount = iFormCount + frmTemp Show ( ) 把此MDI窗體顯示出來End Sub 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 退出 菜單項(xiàng) 下列代碼的作用是退出應(yīng)用程序 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickApplication Exit ( ) 退出應(yīng)用程序End Sub 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 層疊顯示 菜單項(xiàng) 下列代碼的作用是層疊排列窗體中的所有MDI窗體 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout Cascade ) 層疊排列窗體中的所有MDI窗體End Sub 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 水平平鋪 菜單項(xiàng) 下列代碼的作用是水平平鋪窗體中的所有MDI窗體 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout TileHorizontal ) 水平平鋪窗體中的所有MDI窗體End Sub 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 垂直平鋪 菜單項(xiàng) 下列代碼的作用是垂直平鋪窗體中的所有MDI窗體 Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout TileVertical ) 垂直平鋪窗體中的所有MDI窗體End Sub 用下列代碼替換Form vb中的MenuItem 的Click事件對應(yīng)的處理代碼 MenuItem 即為圖 中的 排列圖標(biāo) 菜單項(xiàng) 下列代碼的作用是窗體中的所有MDI窗體排列圖標(biāo) Private Sub MenuItem _Click ( ByVal sender As System Object ByVal e As System EventArgs ) Handles MenuItem ClickMe LayoutMdi ( MdiLayout ArrangeIcons ) 窗體中的所有MDI窗體排列圖標(biāo)End Sub至此【MDI編程】項(xiàng)目的全部工作就完成了 圖 圖 和圖 是程序運(yùn)行后的界面   圖 【MDI編程】運(yùn)行界面之一   圖 【MDI編程】運(yùn)行界面之二 圖 【MDI編程】運(yùn)行界面之三 此時我們注意到圖 所示的 窗口 菜單中增加許多子菜單 而在程序設(shè)計(jì)時 并沒有處理這些功能的代碼 這是由于第十一步中設(shè)置 窗口 菜單項(xiàng)的 MdiList 屬性值為 True 造成的 可見正確的設(shè)置組件的屬性值有時的確能夠代替煩雜的代碼編寫工作 五 總結(jié) 本文主要內(nèi)容有二個 其一是介紹的在Visual Basic Net定制不規(guī)則窗體的實(shí)現(xiàn)方法 在Visual Basic Net中創(chuàng)建不規(guī)則窗體主要使用的是Region類和GraphicsPath類 GraphicsPath主要是繪制窗體的形狀 Region主要是以GraphicsPath來構(gòu)建窗體 結(jié)合本文的實(shí)現(xiàn)思路和具體方法 我想對于其他形狀的窗體 在掌握GraphicsPath類提供的使用方法的前提下 加上對所要創(chuàng)建不規(guī)則窗體的規(guī)劃設(shè)計(jì) 用Visual Basic Net實(shí)現(xiàn)起來應(yīng)該不算很困難 本文的另外一個主要內(nèi)容就是介紹在Visual Basic Net編寫MDI應(yīng)用程序的基本過程 技巧和注意事項(xiàng) 通過本文的介紹可見Visual Basic Net的MDI編程并沒有什么復(fù)雜的地方 只需了解一些對MDI窗體處理的方法及其調(diào)用方式 當(dāng)然更重要的是要了解并掌握某些組件的針對MDI的屬性及其設(shè)置方式 lishixinzhi/Article/program/net/201311/11698

vb.net界面設(shè)計(jì)

可以先把外層的目錄新建出來,代碼如下:

Dim path As String

path = "c:\text\text\txt\text1.txt"

System.IO.Directory.CreateDirectory(path.Substring(0, InStrRev(path, "\"))) '建立path這個路徑的所有所需目錄

System.IO.File.WriteAllText(path, "牛年快樂", System.Text.Encoding.Default)

vb界面能美化嗎?感覺新出來的vb.net的界面明顯比vb美觀,但是vb.net語法還不熟,現(xiàn)在想把vb變得好看一些。

不難的,vb.net的語言比vb的完整些而已。而且一樣可以利用英文的理解方法理解vb.net的代碼,相對來說,vb.net更容易。語法來看,vb多數(shù)是用縮寫的,而vb.net是用完整的單詞,更便于理解,而且API也簡化了很多。

所以,vb轉(zhuǎn)vb.net是很容易上手的。

當(dāng)前名稱:vb.net高檔界面 vb界面介紹
URL網(wǎng)址:http://muchs.cn/article8/hgsoop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、服務(wù)器托管網(wǎng)頁設(shè)計(jì)公司、手機(jī)網(wǎng)站建設(shè)、軟件開發(fā)品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)