在VB中,如果窗体改变大小,控件也跟着改变,代码该怎么写?
比如说,我在FORM上添加一个label控件,FORM窗体的大小改变了,我想把label控体也一起改变,有能帮助我的请回答一下,谢谢!~...
比如说,我在FORM上添加一个label控件,FORM窗体的大小改变了,我想把label控体也一起改变,有能帮助我的请回答一下,谢谢!~
展开
6个回答
展开全部
'只要设置它的长和宽跟窗体形成关系就行了(在click、 mouseup ...事件里都可以。下面是在mousemove事件里写的,就是说鼠标移到窗体内就会发生改变。)
下面是代码:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.BorderStyle = 1 '它的边框要现出来才看得到
Label1.Width = ScaleWidth / 2 '这里设置它的长等于窗体长的一半
Label1.Height = ScaleHeight / 2 '宽也等于窗体宽的一半
End Sub
下面是代码:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.BorderStyle = 1 '它的边框要现出来才看得到
Label1.Width = ScaleWidth / 2 '这里设置它的长等于窗体长的一半
Label1.Height = ScaleHeight / 2 '宽也等于窗体宽的一半
End Sub
展开全部
把改变控件大小的代码写到窗体的resize事件里,只要窗体的大小发生变化就会触发该事件,千万不要写到mousemove事件中,不然每次鼠标移动都会触发的,不管窗体大小是否发生变化
'示例
Private Sub Form_Resize()
'判断窗口是否最小化,以免产生除零异常
If Me.WindowState = 1 Then
End
End If
'改变窗口内部控件大小
Text1.Left = 10
Text1.Top = 10
Text1.Width = Me.ScaleWidth - 30
Text1.Height = Me.ScaleHeight - 40 - Command1.Height
Command1.Left = (Me.ScaleWidth - Command1.Width) / 2
Command1.Top = Text1.Top + Text1.Height + 10
End Sub
'示例
Private Sub Form_Resize()
'判断窗口是否最小化,以免产生除零异常
If Me.WindowState = 1 Then
End
End If
'改变窗口内部控件大小
Text1.Left = 10
Text1.Top = 10
Text1.Width = Me.ScaleWidth - 30
Text1.Height = Me.ScaleHeight - 40 - Command1.Height
Command1.Left = (Me.ScaleWidth - Command1.Width) / 2
Command1.Top = Text1.Top + Text1.Height + 10
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这段代码 窗体内的所有控件都会成比例缩放:
Dim LastW As Long, LastH As Long
Private Sub Form_Load()
LastW = Me.ScaleWidth
LastH = Me.ScaleHeight
End Sub
Private Sub Form_Resize()
Dim i As Control
If Me.WindowState = 1 Then Exit Sub '防止最小化时出错
If Me.Height < 3000 Then Me.Height = 3000 '防止窗体太小导致比例失真
If Me.Width < 3000 Then Me.Width = 3000
On Error Resume Next
For Each i In Form1
i.Top = (Me.ScaleHeight / LastH) * i.Top
i.Height = (Me.ScaleHeight / LastH) * i.Height '如果有list控件,建议其高度单独进行赋值
i.Left = (Me.ScaleWidth / LastW) * i.Left
i.Width = (Me.ScaleWidth / LastW) * i.Width
Next
LastW = Me.ScaleWidth
LastH = Me.ScaleHeight
End Sub
Dim LastW As Long, LastH As Long
Private Sub Form_Load()
LastW = Me.ScaleWidth
LastH = Me.ScaleHeight
End Sub
Private Sub Form_Resize()
Dim i As Control
If Me.WindowState = 1 Then Exit Sub '防止最小化时出错
If Me.Height < 3000 Then Me.Height = 3000 '防止窗体太小导致比例失真
If Me.Width < 3000 Then Me.Width = 3000
On Error Resume Next
For Each i In Form1
i.Top = (Me.ScaleHeight / LastH) * i.Top
i.Height = (Me.ScaleHeight / LastH) * i.Height '如果有list控件,建议其高度单独进行赋值
i.Left = (Me.ScaleWidth / LastW) * i.Left
i.Width = (Me.ScaleWidth / LastW) * i.Width
Next
LastW = Me.ScaleWidth
LastH = Me.ScaleHeight
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Form_Resize()
If Me.Width < 3000 Then Me.Width = 3000 '控制最小尺寸,不过这是简单的做法,有闪动的
If Me.Height < 3000 Then Me.Height = 3000
Command1.Top = 2 * Me.ScaleHeight / 3 '在窗体的2/3处
Command1.Left = (Me.ScaleWidth - Command1.Width) / 2 '居中
Text1.Top = Me.ScaleHeight / 3 '在窗体的 1/3处
Text1.Left = (Me.ScaleWidth - Text1.Width) / 2 '居中
'还可以改变控件的高度,长度,等等参数
End Sub
If Me.Width < 3000 Then Me.Width = 3000 '控制最小尺寸,不过这是简单的做法,有闪动的
If Me.Height < 3000 Then Me.Height = 3000
Command1.Top = 2 * Me.ScaleHeight / 3 '在窗体的2/3处
Command1.Left = (Me.ScaleWidth - Command1.Width) / 2 '居中
Text1.Top = Me.ScaleHeight / 3 '在窗体的 1/3处
Text1.Left = (Me.ScaleWidth - Text1.Width) / 2 '居中
'还可以改变控件的高度,长度,等等参数
End Sub
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上的写错了
If Me.WindowState = 1 Then
End
End If
end就退出了,应该是exit sub
If Me.WindowState = 1 Then
End
End If
end就退出了,应该是exit sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询