微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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;

原文地址:https://www.jb51.cc/csharp/91865.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐