2014-03-03 41 views
2

我是新来的WinForms用户控制,我所试图做的是一个简单的形式:的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; 
    } 

不工作 - >控制利己伸展

pic

+0

为什么在代码级别执行此操作? –

+0

我觉得你的意思是设置用户控件的Dock属性而不是面板。设置面板的Anchor和Dock以及用户控制都不是什么问题? – jmcilhinney

回答

5

试试这个,

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控件的属性,以根据面板中的usercontrol拉伸对其进行拉伸。

赞。

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属性。

+0

无法正常工作。控制无法通过面板 – omriman12

+1

finnaly!我们有一个胜利者.. – omriman12

0

您需要停靠您的用户控制,以及。对接面板使它停靠在表格上,但不是UserControl

userControl.Dock = DockStyle.Fill; 
+0

是的,我编辑了我的答案,结果相同。 – omriman12

+0

你需要停靠'panel1'以及'userControl'而不是任何一个。你需要为**这两个** –

+0

停靠这两个来填充,相同的结果 – omriman12