VB 自动调整控件位置的代码,请多点解释。 _Resize() 不会用,最好是完整的代码,让我研究一下
展开全部
自动调整知道一下几点就没问题了:
一、控件的位置是由控件的左上角指定的,即Left和Top属性。调整位置只要修改这两个属性就可以了。当然用Move方法可以一步到位,在移动的同时调整大小。
二、位置的计算用到容器的尺寸时通常使用有Scale开头的高度宽度,因为这些属性是指容器内实际可用的空间(不包括边框厚度,标题栏等等)。比如你要将一个图片(在图片框pic1中)总是显示在窗体的中间,可以这么写:
pic1.Left = (Me.ScaleWidth - pic1.Width) / 2
pic1.Top = (Me.ScaleHeight - pic1.Height) / 2
三、一些特殊情况。比如设置控件的大小在最小化时就可能会有错误,因为计算出来的是负数。可以在前面加上最小尺寸的限制:
if Me.ScaleWidth > 300 Then Text1.Width = (Me.ScaleWidth - pic1.Width) / 3
即当窗体尺寸小于300(调整后的文本框宽度100)时,将不做调整。
Resize 事件是在尺寸变化后触发的,所以在事件里面的尺寸就是变化后的尺寸。对于最小化的窗体,它的宽高都是0.。
一、控件的位置是由控件的左上角指定的,即Left和Top属性。调整位置只要修改这两个属性就可以了。当然用Move方法可以一步到位,在移动的同时调整大小。
二、位置的计算用到容器的尺寸时通常使用有Scale开头的高度宽度,因为这些属性是指容器内实际可用的空间(不包括边框厚度,标题栏等等)。比如你要将一个图片(在图片框pic1中)总是显示在窗体的中间,可以这么写:
pic1.Left = (Me.ScaleWidth - pic1.Width) / 2
pic1.Top = (Me.ScaleHeight - pic1.Height) / 2
三、一些特殊情况。比如设置控件的大小在最小化时就可能会有错误,因为计算出来的是负数。可以在前面加上最小尺寸的限制:
if Me.ScaleWidth > 300 Then Text1.Width = (Me.ScaleWidth - pic1.Width) / 3
即当窗体尺寸小于300(调整后的文本框宽度100)时,将不做调整。
Resize 事件是在尺寸变化后触发的,所以在事件里面的尺寸就是变化后的尺寸。对于最小化的窗体,它的宽高都是0.。
展开全部
至于现成的,如果你的VB比较完整的话,会自带web浏览器,方法是选择添加窗体,选择"web"浏览器,这个窗体里就有现成的Resize事件,可供你研究。下面我简单说一下
当窗体的大小发生改变时,会触发Resize事件。包括用户使用鼠标托拉窗体的边缘(当然你窗体的BorderStyle属性应该是2-Sizable),最大化,以及通过代码改变窗体的Height、Width属性等,都会触发这个事件。这个事件主要用途就是让控件的位置或大小随窗体而改变,所以这里你需用代码来重新定义各个控件的大小或位置属性。如,让Command1使终保持在窗体的右下方,Text1始终伸到窗体最右面
Private Sub Form_Resize()
Command1.Left = Me.ScaleWidth - 840
Command1.Top = Me.Top - 480
Text1.Width = Me.ScaleWidth - Text1.Left - 120
End Sub
希望能帮到你,不懂可以追问。
当窗体的大小发生改变时,会触发Resize事件。包括用户使用鼠标托拉窗体的边缘(当然你窗体的BorderStyle属性应该是2-Sizable),最大化,以及通过代码改变窗体的Height、Width属性等,都会触发这个事件。这个事件主要用途就是让控件的位置或大小随窗体而改变,所以这里你需用代码来重新定义各个控件的大小或位置属性。如,让Command1使终保持在窗体的右下方,Text1始终伸到窗体最右面
Private Sub Form_Resize()
Command1.Left = Me.ScaleWidth - 840
Command1.Top = Me.Top - 480
Text1.Width = Me.ScaleWidth - Text1.Left - 120
End Sub
希望能帮到你,不懂可以追问。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Resize在使用的时候要注意WindowState属性,当为1,也就是最小化时,不能调用resize.一般会在这时候设置如放大文本框之类的功能,如果最小化时,不判断就设置文本框的大小,就会出错.只要注意这个,其它的都好办了.给你段代码,是文本框随窗口一起变化的,text1设MultiLine为true,scrollbars为both就能看到效果了
Private Sub Form_Resize()
If Me.WindowState <> 1 Then
With Text1
.Top = 0
.Left = 0
.Height = Me.Height - 520
.Width = Me.Width - 120
End With
End If
End Sub
Private Sub Form_Resize()
If Me.WindowState <> 1 Then
With Text1
.Top = 0
.Left = 0
.Height = Me.Height - 520
.Width = Me.Width - 120
End With
End If
End Sub
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询