首先窗口也是一個(gè)類(lèi),而顯示出來(lái)的可以操作的那個(gè)窗口則是這個(gè)類(lèi)的實(shí)例

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、定襄ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的定襄網(wǎng)站制作公司
你的意思是點(diǎn)擊a的按鈕之后單純更新b的數(shù)據(jù)還是要改變b上面的控件顯示的數(shù)據(jù)?
如果是前者,也就是b不用在顯示上有任何變動(dòng)的話,那么:
如果b是a的子窗口,那把b窗口的變量名變成是a的全局變量,然后再b把那個(gè)要變的數(shù)據(jù)設(shè)為全局并且是public,這樣通過(guò)“b窗口變量名.要變的數(shù)據(jù)”就能訪問(wèn)到b里面的變量
如果b不是別人子窗口那么b就不具備變量名了(比如說(shuō)你是要從子窗口改變主窗口的變量),那你只能通過(guò)b的類(lèi)名(就是name屬性)來(lái)訪問(wèn)它的數(shù)據(jù),這時(shí)就只能把你要改的那個(gè)數(shù)據(jù)設(shè)為static了。
如果你懂了前面我說(shuō)的,然后你問(wèn)題是后者,就是說(shuō)要通過(guò)a的按鈕改變b的控件的狀態(tài)的話,那么由于b上面的控件不是public的,所以沒(méi)法訪問(wèn),那么,
方法一:在實(shí)例化b之后,把b上面要改的那個(gè)控件作為變量傳給a
方法二:有時(shí)因?yàn)楦鞣N原因無(wú)法使用方法一,那就只能把你將要做的修改做成b里面一個(gè)帶變量的函數(shù),但由于靜態(tài)函數(shù)不能調(diào)用控件,所以要另外定義一個(gè)委托,然后設(shè)置一個(gè)該委托的靜態(tài)全局變量,然后再b初始化的時(shí)候用這個(gè)函數(shù)作為變量執(zhí)行構(gòu)造函數(shù),這樣就能在a調(diào)用b的那個(gè)更改控件狀態(tài)的函數(shù)了。
簡(jiǎn)單總結(jié)一下:把設(shè)計(jì)的窗體當(dāng)成類(lèi),把實(shí)際操作的窗體看成這些類(lèi)實(shí)體化后的變量,然后通過(guò)全局的公共變量、函數(shù)進(jìn)行互動(dòng),由于主窗體是系統(tǒng)自動(dòng)打開(kāi)的,所以沒(méi)有變量名,那就只能通過(guò)類(lèi)名來(lái)訪問(wèn),所以要把需要被訪問(wèn)的變量、函數(shù)設(shè)為靜態(tài),但由于靜態(tài)函數(shù)無(wú)法訪問(wèn)控件,所以只能設(shè)置靜態(tài)的委托變量并在窗體實(shí)例化的時(shí)候加載那個(gè)要訪問(wèn)的非靜態(tài)函數(shù)。
花了二十分鐘給你寫(xiě)了代碼,已測(cè)試。建議學(xué)習(xí)并使用System.Drawing繪制。
主要是掌握Graphics.FillRectangle和DrawString的使用。
Imports?System.Drawing
Public?Class?進(jìn)度條UI
Public?上面筆刷?As?SolidBrush?=?New?SolidBrush(Color.FromArgb(192,?175,?238,?238))
Public?下面筆刷?As?SolidBrush?=?New?SolidBrush(Color.FromArgb(192,?30,?144,?255))
Public?文字筆?As?SolidBrush?=?New?SolidBrush(Color.FromArgb(255,?255,?255,?255))
Public?字體?As?Font?=?New?Font("微軟雅黑",?14.0)
Public?文字格式?As?StringFormat?=?New?StringFormat()?With
{.Alignment?=?StringAlignment.Center,?.LineAlignment?=?StringAlignment.Center}
'''?summary
'''?繪制指定進(jìn)度的圖像。
'''?當(dāng)進(jìn)度變化時(shí)調(diào)用一次本方法,建議將創(chuàng)建的Graphics對(duì)象保存到變量而不要重復(fù)創(chuàng)建。。
'''?/summary
'''?param?name="控件"繪制到此控件的工作區(qū)/param
'''?param?name="g"繪制到控件的Graphics對(duì)象,例如?Button1.CreateGraphics()/param
'''?param?name="進(jìn)度"進(jìn)度百分比實(shí)數(shù),57%?=?0.57/param
Public?Sub?繪制(ByRef?控件?As?Control,?ByRef?g?As?Graphics,?ByVal?進(jìn)度?As?Double)
Dim?矩形?=?控件.ClientRectangle?'獲取控件的工作區(qū)矩形
Dim?下面高度?=?CInt(矩形.Height?*?進(jìn)度)?'獲取下面顏色塊的高度
Dim?中間位置?=?矩形.Top?+?矩形.Height?-?下面高度?'獲取中間分界線的Y坐標(biāo)
Dim?上矩形?=?New?Rectangle(矩形.X,?矩形.Y,?矩形.Width,?矩形.Height?-?下面高度)
Dim?下矩形?=?New?Rectangle(矩形.X,?中間位置,?矩形.Width,?下面高度)
g.FillRectangle(上面筆刷,?上矩形)
g.FillRectangle(下面筆刷,?下矩形)
'繪制文字
Dim?文字?As?String?=?String.Format("{0:0.00}%",?進(jìn)度?*?100)
g.DrawString(文字,?字體,?文字筆,?矩形,?文字格式)
End?Sub
End?Class
下面是Form1窗體的代碼:添加一個(gè)Button1和Timer1控件,將Button1尺寸拖大點(diǎn)
Public?Class?Form1
Public?g?As?Graphics
Public?進(jìn)度條UI?As?New?進(jìn)度條UI
Public?進(jìn)度?As?Double
Private?Sub?Button1_Click(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Button1.Click
g?=?Button1.CreateGraphics()
Timer1.Enabled?=?Not?Timer1.Enabled
End?Sub
Private?Sub?Timer1_Tick(ByVal?sender?As?System.Object,?ByVal?e?As?System.EventArgs)?Handles?Timer1.Tick
進(jìn)度?+=?0.01
進(jìn)度條UI.繪制(Button1,?g,?進(jìn)度)
End?Sub
End?Class
截至今天2016/12/02,VB.net最新版本是VB 14,
對(duì)應(yīng)的IDE為Visual Studio 2015
從VB 7開(kāi)始,每次.net平臺(tái)更新,VB版本也會(huì)不斷更新。
VB歷史版本如下(.net平臺(tái))
沒(méi)有 VB13?
VB12 對(duì)應(yīng) VS2013
VB11 對(duì)應(yīng) VS2012
VB10 對(duì)應(yīng) VS2010
VB9 對(duì)應(yīng) VS2008
VB8 對(duì)應(yīng) VS2005
VB7 對(duì)應(yīng) VS2003
VB6 是經(jīng)典版本,它不是 .net平臺(tái)的
Timer 是在 主線程里執(zhí)行的,Thread 是在自己的線程中執(zhí)行的,多核心的CPU使用線程能提高處理能力。回到你的問(wèn)題,主線程如果卡死,timer就會(huì)失去響應(yīng),很正常的。請(qǐng)使用System.Timers.Timer類(lèi)吧。請(qǐng)參考一下:
你1.0里做了查找更新的功能么?通常比如做一段連到更新服務(wù)器,驗(yàn)證下最新版本信息比如服務(wù)器目錄下放個(gè)記錄版本號(hào)和新版位置的txt,有了就用單寫(xiě)的更新程序更新(不能更新正在運(yùn)行的自己的關(guān)系)。至于沒(méi)做這部分而要讓原來(lái)的1.0自己“感應(yīng)”到那是天方夜譚了。
新聞標(biāo)題:vb.net更新ui,VB客戶端更新
轉(zhuǎn)載來(lái)源:http://chinadenli.net/article13/dsgggds.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站排名、做網(wǎng)站、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、ChatGPT、網(wǎng)站營(yíng)銷(xiāo)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容