调整窗口大小时,我的表单元素如何调整大小?

时间:2013-01-02 04:29:23

标签: vb.net winforms visual-studio

我有这个表单,里面有一个制表符控件和一个列表框:

enter image description here

当我调整窗口高度时,我会得到这样的结果:

enter image description here

但是,我实际上希望选项卡控件和列表框可以调整大小,具有以下结果:

enter image description here

我相信我可以通过回复表单中的某种onResize()方法来实现此效果,并自行计算以相应地手动更新选项卡控件和列表框的大小。

但是,我已经看到很多应用程序实现了这种效果,所以我怀疑实际上有更好的方法 - 也许是内置功能。<​​/ p>

你知道更好的方法来达到这个效果吗?

9 个答案:

答案 0 :(得分:11)

这是一个很好的教程,解释了如何使用dock和anchor属性调整容器表单控件的大小时调整winform控件的大小:

http://www.techrepublic.com/article/manage-winform-controls-using-the-anchor-and-dock-properties/6165908

设置锚属性的四个值(顶部,右侧,底部,左侧),即使重新调整大小,也可以使控件的边缘相对于Form控件保持静止。

答案 1 :(得分:7)

您可以使用制表符控件的anchor属性 - 只需锚定所有四个边。

答案 2 :(得分:1)

您可以使用Of Tab和列表框的Dock属性填充

答案 3 :(得分:1)

这可能有所帮助:

Private Sub frmMain_SizeChanged(sender As Object, e As EventArgs) Handles MyBase.SizeChanged 'tab container sizechanged event
        tabMain.Dock = DockStyle.None 'set dock to none to allow resize
        tabMain.Size = New Size(New Point(3, 3)) ' set size anything you want
        tabMain.Dock = DockStyle.Fill 'set dock to fill to fit to container
    End Sub

答案 4 :(得分:1)

要获得所需的结果,请将控件放在标准尺寸表单中。然后用 Anchor属性为Top,Bottom,Left,Right。这允许您指定始终希望控件在基于最小大小的表单中相对定位。

即: 将锚属性设置为顶部,底部,左侧,右侧,这将确保控件的顶部,底部,左侧,右侧边缘始终与每条边相同,无论父级大小如何。

如果您希望控件与控制面的每个边缘保持特定距离,请使用“锚定顶部”,“底部”,“左侧”,“右侧”

如果您希望控件顶部和左侧边缘与父级的顶部和左侧边缘锁定8个像素,请将“锚点属性”设置为“顶部”,左侧控件将永远不会调整大小,它将始终保持相对位置为8,8。 / p>

答案 5 :(得分:0)

您可以使用DockAnchor属性来控制调整其父级/容器大小时组件控件的大小调整方式。

要使控件填充其容器,只需

theControl.Dock = System.Windows.Forms.DockStyle.Fill

要保留一些边距,请设置Anchor属性

theControl.Anchor = CType((System.Windows.Forms.AnchorStyles.Top _
    Or System.Windows.Forms.AnchorStyles.Bottom _
    Or System.Windows.Forms.AnchorStyles.Left _
    Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)

您还可以在“属性”工具窗口中设置这些属性。

答案 6 :(得分:0)

点击tab 1tab 2然后在Property Tab旁边查找Dock媒体资源。然后选择中间的那个或输入完整。

或者

您可以查找Anchor并选择bottom tabtop tagright tagleft tag

希望这有帮助!

答案 7 :(得分:0)

您可以在表单加载事件中使用以下代码...

TabControl1.Dock = DockStyle.Fill
ListBox1.Dock = DockStyle.Fill

这还将在调整表单大小时调整控件的大小。

您还可以使用tableLayout Panel或控件的anchor属性来获得相同的结果。

希望这会有所帮助!

答案 8 :(得分:-1)

我在 anchor dock 上苦苦挣扎,因为我从其他库中获得了许多控件,其中一些控件没有anchor和dock属性,但是这项技术帮助过我。通过使用窗体的Resize事件,使用WinForm的 width Height 属性引用该控件,可以动态设置WinForm中所有控件的大小。在下面的代码示例中,表单名称为Main。

Dim CuRWidth As Integer = Me.Width
Dim CuRHeight As Integer = Me.Height

    Private Sub Main_Resize(sender As Object, e As EventArgs) Handles MyBase.Resize
            Dim RatioHeight As Double = (Me.Height - CuRHeight) / CuRHeight
            Dim RatioWidth As Double = (Me.Width - CuRWidth) / CuRWidth

            For Each ctrl As Control In Controls
                ctrl.Width += ctrl.Width * RatioWidth
                ctrl.Left += ctrl.Left * RatioWidth
                ctrl.Top += ctrl.Top * RatioHeight
                ctrl.Height += ctrl.Height * RatioHeight
            Next

            CuRHeight = Me.Height
            CuRWidth = Me.Width
End Sub

来源:https://www.youtube.com/watch?v=QVi1ve5qHXA