当表格宽度减小时如何防止控制消失?

时间:2014-01-13 15:00:57

标签: c#-4.0 anchor tablelayout dock

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

1 个答案:

答案 0 :(得分:0)

我能够在针对.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));
        }
    }