当窗体的宽度减小时如何防止控件消失?
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控件,当控件宽度较小时,自适应问题