這是一個(gè)關(guān)于模態(tài)窗口與非模態(tài)窗口的問(wèn)題。
創(chuàng)新互聯(lián)長(zhǎng)期為上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為西城企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站建設(shè),西城網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
實(shí)現(xiàn)非模態(tài)窗口也沒(méi)什么難度
Dim form As New Form1
form.TopMost = True
form.Show()
你再將鼠標(biāo)移到父窗口上,彈出的窗口也不會(huì)消失。
花了二十分鐘給你寫(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
可以利用msgbox 實(shí)現(xiàn),也可以通過(guò)另外的窗體上畫(huà)出表格實(shí)現(xiàn)
方法一,利用msgbox:
Private Sub Command1_Click()Dim a As Long, b As Long, c As LongMsgBox "┌────┬────┬────┐" vbCrLf _ "│ 庫(kù)存1 │ 庫(kù)存2 │ 庫(kù)存3 │" vbCrLf _ "├────┼────┼────┤" vbCrLf _ "│" formatstr(a) "│" formatstr(b) "│" formatstr(c) "│" vbCrLf _ "└────┴────┴────┘" End SubPrivate Function formatstr(ByVal inputStr As String) As StringDim j As Integerj = (8 - Len(inputStr)) \ 2formatstr = Space(j) inputStr Space(j) Space((8 - Len(inputStr)) Mod 2)End Function
方法二,利用窗體實(shí)現(xiàn):
’新建form2窗體‘將以下代碼復(fù)制到form2窗體中Private Sub Form_Load()ShowPrint "┌────┬────┬────┐" vbCrLf _ "│ 庫(kù)存1 │ 庫(kù)存2 │ 庫(kù)存3 │" vbCrLf _ "├────┼────┼────┤" vbCrLf _ "│" formatstr(a) "│" formatstr(b) "│" formatstr(c) "│" vbCrLf _ "└────┴────┴────┘" End SubPrivate Function formatstr(ByVal inputStr As String) As StringDim j As Integerj = (8 - Len(inputStr)) \ 2formatstr = Space(j) inputStr Space(j) Space((8 - Len(inputStr)) Mod 2)End Function‘將以下代碼復(fù)制在form1窗體中Private Sub Command1_Click()Form2.ShowEnd Sub
可以的,設(shè)置邊框窗戶,
設(shè)置可拖動(dòng)
releasecapture()
sendmessage wm_syscommand ,htcaption or wm_move
置頂
setwindowpos -1,0,0,0,0,H1 or H2
當(dāng)用戶按下左鍵時(shí),為按下對(duì)象的MouseMove事件綁定處理方法,并記錄鼠標(biāo)坐標(biāo)(窗體左上角為原點(diǎn),在事件的MouseEventArgs類型的e參數(shù)中提供)。此時(shí)用戶移動(dòng)鼠標(biāo),保持窗體原點(diǎn)與鼠標(biāo)新坐標(biāo)的相對(duì)位置不變。當(dāng)用戶釋放左鍵時(shí),撤銷按下對(duì)象的MouseMove事件處理方法