控件随着窗体的改变
VB .NET2010中 怎么做到让控件随着窗体的改变而相对位置发生改变,控件大小不变。给出代码最好 谢谢
[解决办法]
设置dock或者anchors属性
[解决办法]
在窗体的大小改变时,重设控件的位置,以下代码给了个例子,让文本框的位置始终处于窗体的水平居中位置
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
Dim n1 As Double
n1 = (Me.Width - TextBox1.Width) / 2
TextBox1.Left = n1
End Sub
[解决办法]
Private Sub Set_Resolution(ByVal SFX As Single, ByVal SFY As Single, _ ByVal MyForm As Form, ByVal pRePosForm As Boolean) Dim i As Integer Dim SFFont As Single SFFont = (SFX + SFY) / 2 'average scale On Error Resume Next 'for read-only or nonexistent properties With MyForm For i = 0 To .Controls.Count - 1 If TypeOf .Controls(i) Is ComboBox Then 'cannot change Height With .Controls(i) .Left = .Left * SFX .Top = .Top * SFY .Width = .Width * SFX End With Else With .Controls(i) .Left = .Left * SFX .Top = .Top * SFY .Width = .Width * SFX .Height = .Height * SFY End With End If .Controls(i).Font = New Font(.Controls(i).Font.Name, .Controls(i).Font.Size * SFFont) autoControlSize(.Controls(i), SFX, SFY) Next i If pRePosForm Then .Left = .Left * SFX .Top = .Top * SFY .Width = .Width * SFX .Height = .Height * SFY End If End With End SubPrivate Sub autoControlSize(ByVal iControl As Control, ByVal SFX As Single, ByVal SFY As Single) Dim i As Integer Dim SFFont As Single On Error Resume Next SFFont = (SFX + SFY) / 2 If iControl Is Nothing Then Exit Sub End If For i = 0 To iControl.Controls.Count - 1 If TypeOf iControl.Controls(i) Is ComboBox Then 'cannot change Height With iControl.Controls(i) .Left = .Left * SFX .Top = .Top * SFY .Width = .Width * SFX End With Else With iControl.Controls(i) .Left = .Left * SFX .Top = .Top * SFY .Width = .Width * SFX .Height = .Height * SFY End With End If iControl.Controls(i).Font = New Font(iControl.Controls(i).Font.Name, iControl.Controls(i).Font.Size * SFFont) autoControlSize(iControl.Controls(i), SFX, SFY) Next End Sub