在vb.net中减少屏幕恢复期间控件的大小

时间:2015-08-10 13:41:20

标签: vb.net visual-studio-2010

嗨我使用下面的代码来增加表单的所有控件的大小,当表单最大化为锚点时,停靠和自动调整大小不会损害控件的大小。

Private Sub PaForm_Resize(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Me.Resize



        If Me.WindowState = FormWindowState.Maximized Then

            count = count + 1
            If count <= 2 Then

                Dim RW As Double = (Me.Width - CW) / CW ' Ratio change of width
                Dim RH As Double = (Me.Height - CH) / CH ' Ratio change of height

                For Each Ctrl As Control In Controls

                    Ctrl.Width += CInt(Ctrl.Width * RW)
                    Ctrl.Height += CInt(Ctrl.Height * RH)

                    Ctrl.Left += CInt(Ctrl.Left * RW)
                    Ctrl.Top += CInt(Ctrl.Top * RH)
                Next

                For Each c As Control In Panel1.Controls
                    c.Width += CInt(c.Width * RW / 4)
                    c.Height += CInt(c.Height * RH / 4)
                    c.Left += CInt(c.Left * RW / 4)
                    c.Top += CInt(c.Top * RH / 4)
                Next
            End If
        End If

当我恢复时,控件的大小是相同的,并且不适合窗口。

您能否建议如何减小尺寸并将所有控件置于正常状态。

表格最大化:

enter image description here

恢复后:

enter image description here

预期:

enter image description here

2 个答案:

答案 0 :(得分:2)

将控件添加到TableLayoutPanel,如果要填充,它将调整控件的大小。

答案 1 :(得分:0)

通过查看屏幕截图,现在可以更加轻松地了解您的需求。

在这种情况下,我同意your first answer - 开始使用TableLayoutPanel。对于您的两列组合框,您可以选择一个(宽度自动或固定标签,%为文本框),A01 - H12按钮 - 另一个,面板#3“控制OK”复选框和其余部分。

您可以将一个TableLayoutPanel用于所有内容,但随后需要使用列范围,如果您决定扩展任一区域,此解决方案就不那么灵活了。