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;

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...