C#中类似于Swing的pack方法的等效方法是什么?

10

我正在用C#开发一个快速应用程序。我想做的一件事是相当于Swing(java)中的pack()。这是一个调用,允许我对表单(Java中的Frame)说,将自己调整为自身组件大小之和的大小。

我已经搜索了很久(组件是动态变化的,因此无法简单地硬编码表单到正确的大小),但我找不到C#中等效的方法。

有人知道它叫什么吗?

3个回答

11

为了“打包”表单,您甚至不需要编写代码。在表单设计器中,将表单的 AutoSize 属性设置为 true,并将 AutoSizeMode 属性设置为 GrowAndShrink,对于任何可能改变大小的控件也要重复此操作。

然后就大功告成了!

运行时(仅限运行时),表单将动态调整大小以容纳所有控件。如果您希望它与控件保持一定的距离,以便控件不会粘在边缘,您可以设置 Padding 属性(我建议至少设置12,12,12,12的值)。


1
当设置像标签这样的控件的AutoSize属性时,您可能希望设置MaximumWidth属性来强制文本换行,以防止任何长行使您的窗体变宽超过屏幕。 - Robadob

3
同样在XAML中:
<Window SizeToContent="WidthAndHeight" />

0

另一种解决方案,仅适用于图像小于屏幕的情况:

Form frm = new Form();
PictureBox pbx = new PictureBox();
pbx.Image = Image.FromFile( _imagePath.Text );
pbx.Dock  = DockStyle.Fill;
frm.Controls.Add( pbx );
frm.Size = pbx.Image.Size;
frm.Show();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接