9

我有这个表单,里面有一个选项卡控件和一个列表框:

在此处输入图像描述

当我调整窗口的高度时,我得到如下信息:

在此处输入图像描述

但是,我实际上希望选项卡控件和列表框一起调整大小,结果如下:

在此处输入图像描述

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

但是,我已经看到许多应用程序实现了这种效果,所以我怀疑实际上有更好的方法来做到这一点——也许是内置功能。

您知道实现此效果的更好方法吗?

4

9 回答 9

12

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

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

设置锚属性的四个值(上、右、下、左),您可以使控件的边缘相对于 Form 控件保持静止,即使在调整大小时也是如此。

于 2013-01-02T05:01:36.623 回答
8

您可以使用选项卡控件的锚属性——只需锚定所有四个边。

于 2013-01-02T04:53:44.730 回答
2

这可能会有所帮助:

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
于 2014-01-16T11:35:10.397 回答
1

您可以使用选项卡和列表框的 Dock 属性来填充

于 2013-01-02T07:56:14.237 回答
1

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

IE:将锚属性设置为 Top、Bottom、Left、Right 这将确保控件的 Top、Bottom、Left、Right 边缘与每个边缘的距离始终相同,无论父项大小如何。

如果您希望控件与控制表面的每个边缘保持特定距离,请使用 Anchor Top、Bottom、Left、Right

如果您希望控件顶部和左侧边缘锁定距离父级顶部和左侧边缘 8 个像素,请将 Anchor 属性设置为 Top,Left 控件将永远不会调整大小,它将始终保持相对定位在 8,8。

于 2014-11-25T17:41:25.800 回答
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)

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

于 2013-01-02T08:14:15.770 回答
0

在查找属性的一侧单击tab 1或然后。然后选择中间的那个或输入full。tab 2Property TabDock

或者

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

希望这有帮助!

于 2015-10-24T19:01:22.933 回答
0

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

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

当窗体也调整大小时,这将调整控件的大小。

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

希望这可以帮助!

于 2018-08-31T13:08:51.137 回答
-1

我在使用锚点停靠点时遇到了很多困难,因为我有很多来自其他库的控件,其中一些没有锚点和停靠点属性,但是这种技术帮助了我。它通过使用该窗体的 Resize 事件使用 WinForm的widthHeight属性引用它来动态设置 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

于 2018-08-03T17:05:01.553 回答