如何使WinForms UserControl填充其容器的大小

53

我正在尝试创建一个多布局主屏幕应用程序。在顶部有一些按钮,链接到应用程序的主要部分(例如Model中每个实体的管理窗口)。

点击任何这些按钮会在一个面板中显示相关的用户控件。该面板持有包含UI的用户控件。

WinForms用户控件没有 AnchorDock 属性。

我已经尝试设置用户控件的属性。

AutoSize=True

还有

private void ManageUsersControl_Load(object sender, EventArgs e)
{
        this.Width = this.Parent.Width;
        this.Height = this.Parent.Height;
}

但是这些没有起作用。
注意:我在运行时动态加载此控件。


5
UserControl确实有一个Dock属性 - 它从Control继承了该属性。请参阅http://msdn.microsoft.com/en-us/library/system.windows.forms.usercontrol.aspx的属性部分。 - MvanGeest
以上声明"WinForms用户控件没有“Anchor”或“Dock”属性"是错误的。我在UserControl上寻找“Dock”。它只应该出现在添加到UserControl的子控件中。 - codingbiz
@MvanGeest 是的,这很有道理,但为什么它不在设计器属性网格中呢? - Steve
1
因为此时 UserControl 是独立的,没有添加到任何需要填充类型的父控件中 - 如果我在 Panel 控件上添加了 UserControl,它应该会显示。 - codingbiz
我认为这里存在一些混淆,即System.Windows.Forms.UserControl(它确实具有Dock属性)和System.Windows.Controls.UserControl(它没有Dock属性)。 - yoyo
3个回答

105

尝试将 Dock 属性设置为 Fill:

private void ManageUsersControl_Load(object sender, EventArgs e)
{
        this.Dock = DockStyle.Fill;
}

我还会将AutoSize设置为默认值,我相信默认值是False。看看它的作用如何...


4
来自原帖:“WinForms 用户控件没有“Anchor”或“Dock”属性。” - Paul Sasik
3
好的,这真让我惊讶。你知道为什么这个属性不在用户控件设计器的属性网格中吗?顺便说一下,在运行时它可以完美地工作。 - Steve
3
很高兴能帮忙...你可以尝试设置DoubleBuffered=true,如果我没记错的话。在设计界面上没有Dock属性有点令人沮丧,但这是有道理的——当在设计UserControl本身时,它会使用什么容器来最大化自己呢?因为没有容器可以填充。 - IAbstract
1
@yoyo:OP正在使用WinForms。 - IAbstract
1
谢谢@IAbstract,你是正确的。我在调查类似问题时发现了这里。我的应用程序包含WPF和WinForms元素,我混淆了两个不同的UserControl类,只有一个具有Dock属性。 - yoyo
显示剩余4条评论

0
UserControl1 myusercontrol = new UserControl1();
            myusercontrol.Dock = DockStyle.Fill;//Dock Prope. Fill user Control Contrainer
            TabPage myTabPage = new TabPage();//New Tab Create
            myTabPage.Text = "Wel-Come Page";//Tab Header Txt
            myTabPage.Controls.Add(myusercontrol);
            tabControl1.TabPages.Add(myTabPage);

-4
在调整大小事件中的用户控件。
 private void MyTextBox_Resize(object sender, EventArgs e)
        {
            this.Width = textBox1.Width;
            this.Height = textBox1.Height;
        }

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