VB怎么添加多个窗口?高分~

VB怎么添加多个窗口?高分~,第1张

右键form1(form1)——添加——添加窗体

这样就可以了

如果想打开另一个窗体代码中软件

form1.Show

Unload Me

如果想打开form2那么就是

form2.Show

Unload Me

以此类推即可

我做了几行。

对无标题栏的窗体,或者不从标题栏移动的情况下可用。

有标题栏并且点住标题栏移动则不理想。

代码如下,仅供参考。

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,

0

sendmessage

bnhwnd,

wm_lbuttonup,

1,

0

'将消息发送到按纽,使其发生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、其他窗体基本都这样。

用容器控件(PictureBox或Frame控件)可以实现。比如先放一个PictureBox控件,在上面再放上其他控件;然后再在窗体放入一个PictureBox控件,再在上面放上另一批按钮、文本框之类的控件,依此类推。然后点第一个按钮时,把第一个PictureBox的Visible属性设为True,其他PictureBox的Visible属性设为False;同理点第二个按钮时,把第二个PictureBox的Visible属性设为True,其他PictureBox的Visible属性设为False,依此类推,即可实现你的目的。当然,如果把作为容器的PictureBox做成控件数组,那么代码会简单得多。

其实这就是选项卡的一种灵活实现方式。通过在容器控件中放入不同功能的其他控件,然后只要控制容器控件的显示或隐藏即可。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11828506.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存