关于vb中控件拖动的问题?

2024-11-30 13:12:25
推荐回答(2个)
回答1:

这是因为Frame控件也是一个容器,从Frame2外进入Frame2内,相当于从一个坐标系进入了另一个坐标系。再未进入Frame2时,Frame1的位置是相对于它所在的窗体(确切的说是该窗体的左上角坐标(0,0))确定的,一旦进入Frame2,Frame1的位置就相对于Frame2的左上角坐标(0,0)确定。
你可以在设计时作个试验,窗体上放一个Frame控件和一个按钮控件,按钮控件在Frame控件外面的时候的坐标设定为一个值(如90,90),当你把该按钮放到Frame控件上的时候,同样设定这个坐标值,你看看什么效果。

回答2:

我给你写了一段示例程序,拖动的控件时label1。这个程序中,只有一个label控件(name属性为label1)和一个窗体。程序如下:
'定义一个布尔变量,用于标识控件是否可拖动
dim
candrag
as
boolean
private
sub
form_load()
'当窗体加载时,设置其值为false(即控件不可拖动)
candrag
=
false
end
sub
private
sub
label1_mousedown(button
as
integer,
shift
as
integer,
x
as
single,
y
as
single)
'当按下鼠标时,控件可以拖动,但是这个动作不在这里执行
candrag
=
true
end
sub
private
sub
label1_mousemove(button
as
integer,
shift
as
integer,
x
as
single,
y
as
single)
if
candrag
then
'如果candrag为真,这一动鼠标时就拖动控件
label1.left
=
label1.left
+
x
label1.top
=
label1.top
+
y
end
if
end
sub
private
sub
label1_mouseup(button
as
integer,
shift
as
integer,
x
as
single,
y
as
single)
'松开鼠标时,控件不可拖动
candrag
=
false
end
sub