读书人

控件随着窗体的改变,该怎么解决

发布时间: 2012-05-10 16:02:39 作者: rapoo

控件随着窗体的改变
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
[解决办法]

VB.NET code
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 

读书人网 >VB Dotnet

热点推荐