当窗体的宽度减小时如何防止控件消失?

Posted

技术标签:

【中文标题】当窗体的宽度减小时如何防止控件消失?【英文标题】: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 【参考方案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));
        
    

【讨论】:

以上是关于当窗体的宽度减小时如何防止控件消失?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止用户控件填充选项扩展得太远

android webview控件,当控件宽度较小时,自适应问题

如何防止静态控件中的文本被剪切?

如何格式化我的 CSS 和 Bootstrap,以便在页面宽度减小时仅包裹某些元素?

Qt Tooltip如何防止文本在内置延迟后消失?

如何防止搜索栏在滚动时消失? iOS 斯威夫特