今天的调整中有需要控件的宽度跟随窗口尺寸自动调整的要求。经调试后可以使用以下语句:
Private Sub quest_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
TabControl1.Width = Me.Width * 0.95
End Sub
关键是在 sizechanged 事件中触发语句,然后直接提取窗口的WIDTH属性进行计算,然后赋值给控件的WIDTH属性就可以了。
----------------------------------------------------------------------------------------------------------------------------------------------------
以下是控件随窗口大小变化而改变大小和位置的一段语句:
Private Sub retu_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
TabControl3.Width = Me.Width - 10
DataGrid_retu_sale.Width = TabControl3.Width - 20
TabControl3.Height = Me.Height - 40
DataGrid_retu_sale.Height = Me.Height - 220
DataGrid_retu_sale_detail.Width = Me.Width - 30
DataGrid_retu_sale_detail.Height = (Me.Height - 50) * 115 / 350 + 70 * (Me.Height / 400 - 1) '这里是计算控件高度与窗口高度的比例关系,这里的比例是随着窗口变大而有一个线性增加。
Dim h, w As Integer
h = DataGrid_retu_sale_detail.Height
w = DataGrid_retu_sale_detail.Width
Label3.Top = DataGrid_retu_sale_detail.Location.Y + h + 15 ‘.top 属性是控件到上边缘的距离,可以确定控件的Y坐标。
Label2.Top = Label3.Top
DataGrid_retu_quest_retu.Top = Label3.Top + 20
DataGrid_retu_quest_retu.Height = h
DataGrid_retu_quest_retu.Width = w
End Sub
---------------------------------------------------------------------------------------------------------------------------------------------------
据说用ANCHOR,或 DOCK属性可以完美的实现相同的功能,我研究了一下但暂时还没啥心得,还不会用。就先用编程的方式来实现这个功能吧。以后对ANCHOR 或 DOCK有了新的心得了再补充吧。