1、沒有事件是直接由最小化、還原觸發(fā)的,它們都會觸發(fā)SizeChanged事件。所以你可以寫主窗體的SizeChanged事件來控制副窗體顯隱,順便改變副窗體的相對位置;

天門網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,天門網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為天門成百上千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的天門做網(wǎng)站的公司定做!
2、在SizeChanged事件中,通過判斷窗體的WindowState屬性來確定用戶是最小化還是還原了;(FormWindowState.Minimized和FormWindowState.Normal枚舉)
3、調(diào)用副窗體的BringToFront方法可以把副窗體帶到最前面來
我做了幾行。
對無標(biāo)題欄的窗體,或者不從標(biāo)題欄移動的情況下可用。
有標(biāo)題欄并且點(diǎn)住標(biāo)題欄移動則不理想。
代碼如下,僅供參考。
1、建立模塊。
option
explicit
public
oldproc
as
long
public
declare
function
setwindowlong
lib
"user32"
alias
"setwindowlonga"
(byval
hwnd
as
long,
byval
nindex
as
long,
byval
dwnewlong
as
long)
as
long
public
declare
function
sendmessage
lib
"user32"
alias
"sendmessagea"
(byval
hwnd
as
long,
byval
wmsg
as
long,
byval
wparam
as
long,
byref
lparam
as
any)
as
long
public
declare
function
callwindowproc
lib
"user32"
alias
"callwindowproca"
(byval
lpprevwndfunc
as
long,
byval
hwnd
as
long,
byval
msg
as
any,
byval
wparam
as
any,
byval
lparam
as
any)
as
long
public
const
wm_move
=
h3
public
const
wm_lbuttondown
=
h201
public
const
wm_lbuttonup
=
h202
public
const
gwl_wndproc
=
(-4)
public
bnhwnd
as
long
public
function
newproc(byval
hwnd
as
long,
byval
msg
as
long,
byval
wp
as
long,
byval
lp
as
long)
as
long
if
msg
=
wm_move
then
'捕獲窗體移動事件
sendmessage
bnhwnd,
wm_lbuttondown,
1,
sendmessage
bnhwnd,
wm_lbuttonup,
1,
'將消息發(fā)送到按紐,使其發(fā)生click事件
end
if
newproc
=
callwindowproc(oldproc,
hwnd,
msg,
wp,
lp)
end
function
2、在窗體上有一個按鈕(名稱為eventbn)
dim
原垂直
as
single,
原水平
as
single
private
sub
eventbn_click()
msgbox
"移動了"
end
sub
private
sub
form_load()
form2.show
form3.show
bnhwnd
=
eventbn.hwnd
'獲得按紐句丙
oldproc
=
setwindowlong(me.hwnd,
gwl_wndproc,
addressof
newproc)
eventbn.visible
=
false
end
sub
private
sub
form_mousedown(button
as
integer,
shift
as
integer,
x
as
single,
y
as
single)
if
button
=
1
then
原垂直
=
me.top
+
y
原水平
=
me.left
+
x
end
if
end
sub
private
sub
form_mouseup(button
as
integer,
shift
as
integer,
x
as
single,
y
as
single)
me.top
=
me.top
-
原垂直
+
y
me.left
=
me.left
-
原水平
+
x
form2.top
=
form2.top
-
原垂直
+
y
form2.left
=
form2.left
-
原水平
+
x
form3.top
=
form3.top
-
原垂直
+
y
form3.left
=
form3.left
-
原水平
+
x
end
sub
3、其他窗體基本都這樣。
建立一個名為 modGeneral 的模塊并加入下面一行代碼:
Friend DataStuff As DataClass
這一行代碼為我的新類 DataClass 創(chuàng)建了一個友元變量,使你可以完全訪問程序集,對這個簡單例子來說,也就是指完整的應(yīng)用程序。然后我添加了下面的代碼到 Form1 的 Load 事件:
DataStuff = New DataClass
Me.txt1stData.DataBindings.Add("Text", DataStuff, "MyData")
Me.txt2ndData.DataBindings.Add("Text", DataStuff, "MoreData")
第一行建立一個 DataClass 新實(shí)例。下面兩行代碼將數(shù)據(jù)綁定到 textbox 控件。對這個窗體而言,就這么些操作!
現(xiàn)在,你怎樣讓它們與 Form2 和其它窗體上的數(shù)據(jù)同步呢?將下面兩行加入到 Form 2 的窗體load 事件中去:
Me.txt1stData.DataBindings.Add("Text",DataStuff, "MyData")
Me.txt2ndData.DataBindings.Add("Text",DataStuff, "Moredata")
這個方法容易確保所有窗體上的幾乎任何類型的數(shù)據(jù)處于同步狀態(tài)。你可以簡單地將控件綁定到某個類的相同實(shí)例上,這就行了。
首先,在一個兩個窗體都能訪問的地方聲明一個變量記錄窗體位置,我這里使用的是Module,你也可以用靜態(tài)類。
Public Module Module1
Public frmLocation As Point
End Module
然后兩個窗體的VisibleChanged事件處理器里寫下面的代碼:
If Me.Visible Then
Me.Location = frmLocation
Else
frmLocation = Me.Location
End If
窗口切換時要“先隱藏后顯示”
文章標(biāo)題:vb點(diǎn)虐
多窗體同步 vb中一個窗體對應(yīng)一個窗體文件嗎
標(biāo)題URL:http://chinadenli.net/article34/ddgsgpe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)公司、品牌網(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)