【问题标题】:Winforms - Fill user control inside panelWinforms - 在面板内填充用户控件
【发布时间】:2014-03-03 09:51:40
【问题描述】:

我是winforms的新手,我想做的是一个简单的表格:

  • 在我的表单中有一个面板。

  • 面板链接到用户控件

  • 用户控件应该填满面板。

这是我的表格:

public Form1()
    {
        InitializeComponent();

        UserControl1 userControl = new UserControl1();

        panel1.Controls.Add(userControl);
        userControl.Anchor = ((AnchorStyles)((((AnchorStyles.Top | AnchorStyles.Bottom)
     | AnchorStyles.Left) | AnchorStyles.Right)));
        userControl.Dock = DockStyle.Fill;
    }

不工作 -> 控件没有拉伸

【问题讨论】:

  • 你为什么在代码级别这样做?
  • 我感觉您的意思是设置用户控件的 Dock 属性而不是面板。设置 Panel 的 Anchor 和 Dock 而不是用户控件有什么意义?

标签: c# winforms


【解决方案1】:

试试这个,

    public Form1()
    {
        InitializeComponent();
        panel1.Dock = DockStyle.Fill;
        UserControl1 userControl = new UserControl1();
        userControl.Dock = DockStyle.Fill;
        panel1.Controls.Add(userControl);

    }

userControl.Dock = DockStyle.Fill; 应该在添加到 panel1 之前调用。

您还需要在UserControl内部设置控件的Anchor属性,以根据面板中的用户控件拉伸来拉伸它。

喜欢。

Public Sub UserControl1()

        //This call is required by the designer.
        InitializeComponent();

        //Add any initialization after the InitializeComponent() call.
        Label1.Anchor = AnchorStyles.Top;
        Label2.Anchor = AnchorStyles.Right;
        Label4.Anchor = AnchorStyles.Bottom;
        Label3.Anchor = AnchorStyles.Left;
    End Sub

注意: userControl.Dock = DockStyle.Fill; 仅拉伸用户控件,而不是用户控件内部的控件。要拉伸用户控件的控件,您需要相应地设置Dock 和Anchor 属性。

【讨论】:

  • 不工作。控件没有穿过面板
【解决方案2】:

您还需要停靠您的用户控件。停靠面板使其停靠在表单上,​​而不是停靠在UserControl。

userControl.Dock = DockStyle.Fill;

【讨论】:

  • 您需要停靠panel1 和userControl 而不是任何一个。你需要为 both 这样做
  • 停靠两者以填充,结果相同
  • @omriman12 尝试删除 Anchor 属性。不需要锚,看看是否有帮助。
猜你喜欢
  • 2012-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 2011-12-09
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多