【问题标题】:how to prevent control disappearing when form's width is decreased?当窗体的宽度减小时如何防止控件消失?
【发布时间】:2014-01-13 15:00:56
【问题描述】:

我想在我的主 Windows 窗体顶部制作一个可调整大小的菜单。我添加了一个 TableLayoutPanel 并将其 Dock 属性设置为 Top。此 TableLayoutPanel 上有相等的 4 列。我在每列上添加了一个按钮,并将它们的 Dock 属性设置为 Fill。当我最大化表单时,我的菜单变得更宽并且适合表单的宽度。这就是我现在想要的。但是,当我减小(未最小化)表单的宽度时,按钮开始从左侧消失。我希望在表单宽度减小时自动调整大小。我怎样才能防止这种情况?有什么建议吗?

【问题讨论】:

  • 您没有正确配置 TLP 中的列。
  • @HansPassant 列的默认值是:autosize

标签: c#-4.0 anchor tablelayout dock


【解决方案1】:

我能够在针对 .Net 4.0 框架的 VS2013 中非常快速地重现此行为。似乎最后一列是受自动调整大小过程影响的列。我将列设置为绝对(20 像素),然后使用动态计算来确定列应占用的屏幕百分比。任何时候添加/删除列时,都需要调用SetColumnSize() 方法。

 public Form1()
    {
        InitializeComponent();

        SetColumnSize();


    }

    private void SetColumnSize()
    {
        float colPercent = 100 / this.tableLayoutPanel1.ColumnCount;
        this.tableLayoutPanel1.ColumnStyles.Clear();
        for (int i = 0; i < this.tableLayoutPanel1.ColumnCount; i++)
        {
            this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, colPercent));
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    相关资源
    最近更新 更多