c# – 放置在TableLayout中的对接控件不会自动缩小到其创建大小的大小

前端之家收集整理的这篇文章主要介绍了c# – 放置在TableLayout中的对接控件不会自动缩小到其创建大小的大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这个问题比所解释的更好地展示,所以我已经设置了一个使用Visual Studio 2010项目的 git repo,用于查看问题.

我有一个项目,我已经将一个ComboBox控件(comboField)添加到TableLayout控件(tableLayoutPanel1).我已经将ComboBox的Dock属性设置为Fill,以便填充已放置在TableLayout控件中的单元格.我还将TableLayout控件的Dock属性设置为Fill,以便填充Form它被放在了. ComboBox的宽度目前为193像素.

当我运行窗体并增加宽度时,ComboBox的大小会按预期的增加.当我减小表单的大小时,ComboBox的大小减小到达原始大小(193像素).在这一点上,ComboBox的宽度不会进一步减小,导致控件的右侧被剪切.这与我预期的相反:由于没有指定MinimumSize,ComboBox的宽度将减小到0.没有为表单上的任何其他控件(如TableLayout控件)指定了MinimumSize.

在相关的情况下,TableLayout的第一列的宽度被设置为100像素的绝对大小,而TableLayout的第二列的宽度已设置为AutoSize.

任何人都可以清楚,为什么这种形式与我的期望相违背,并就如何以我想要的方式得到这种工作提供建议?任何帮助将不胜感激.

解决方法

tablelayoutpanel似乎存储控件的初始大小,不管它们是对接,锚定还是其他任何值,如AutoSizeMode.GrowAndShrink,都不会使它们更小.在设计器中,对接控件的大小总是存储的,所以我发现最简单的方法是在initializecponpon后将宽度设置为0(由于控件停靠,实际上不会调整组合框的大小,允许桌面面板使其与设置的宽度一样小)
InitializeComponent();
        comboField.Width = 0;

猜你在找的C#相关文章