Dan*_*ens 11 .net c# tablelayoutpanel visual-studio-2010 winforms
这个问题比解释的更好,所以我在Visual Studio 2010项目中设置了一个git repo,用于查看实际问题.
我有一个项目,我已经将一个ComboBox控件(comboField)添加到TableLayout控件(tableLayoutPanel1).我已经设置了DockComboBox 的属性,Fill以便它填充它所放置的TableLayout控件的单元格.我还设置Dock了TableLayout控件的属性,Fill以便它填充已放置的Form上.ComboBox的宽度目前为193像素.
当我运行窗体并增加其宽度时,ComboBox的大小会增加,如预期的那样.当我减小窗体的大小时,ComboBox的大小会缩小,直到达到原始大小(193像素).此时,ComboBox的宽度不会进一步减小,导致控件的右侧被剪裁.这与我的预期相反:ComboBox的宽度将减少到零,因为没有MinimumSize指定.也没有MinimumSize为表单上的任何其他控件指定,例如TableLayout控件.
如果它是相关的,TableLayout的第一列的宽度设置为Absolute100像素的大小,而TableLayout的第二列的宽度已设置为AutoSize.
任何人都可以解释为什么这种形式的表现与我的期望相反,并建议我如何以我想要的方式工作?任何帮助将非常感激.
Ang*_*wal 10
我下载了你的代码并做了这个改变.它现在有效 -
将第二列的SizeType设为百分比并使其成为100%
设计师代码: -
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
Run Code Online (Sandbox Code Playgroud)

tablelayoutpanel似乎存储控件的初始大小,并且永远不会使它们变小,无论对接,锚定或任何其他值如AutoSizeMode.GrowAndShrink.在设计器中,对接控件的大小将始终存储,所以我发现最简单的方法是在initializecomponent之后将宽度设置为0(因为控件停靠,它实际上不会调整组合框的大小,但它会允许tablelayoutpanel使其小到设置的宽度)
InitializeComponent();
comboField.Width = 0;
Run Code Online (Sandbox Code Playgroud)