我编写的代码会调整Control及其所有控件的大小,但是PropertyGrid存在问题。用户界面是一个包含TabControl tabContAll的GroupBox。在tabContAll中是一个包含PropertyGrid的TabPage。
private void ResizeUI ()
{
ui.Location = new Point (this.ClientRectangle.Left, this.ClientRectangle.Top + menubar.Height);
ui.Size = new Size (this.ClientRectangle.Width, this.ClientRectangle.Height - menubar.Height);
ResizeControl (tabContAll, ui);
}
private void ResizeControl (Control control, Control parent)
{
control.Location = new Point (parent.ClientRectangle.Left, parent.ClientRectangle.Top);
control.Size = new Size (parent.ClientRectangle.Width, parent.ClientRectangle.Height);
foreach (Control child in control.Controls) {
ResizeControl (child, control);
}
}
当表单加载时调用此函数,这与what it looks like相比,如果我在循环中注释掉调整大小,那么PropertyGrid不会调整大小:
此外,当调整大小时,描述不起作用。它只显示了该物业的名称。
答案 0 :(得分:3)
我强烈建议您不要为控件调整大小编写代码,除非您需要非常自定义的行为。
改为设置Control.Dock
或Control.Anchor
属性,剩下的就是它们。
例如,通过为Dock
和DockStyle.Fill
设置TabControl
属性为PropertyGrid
,可以轻松解决您的案例(显然,删除自定义调整大小的方法)
这是WinForms自定义控件设计的完整MSDN演练: