面板不会停靠在winforms我想要的位置

时间:2012-11-05 17:46:32

标签: c# winforms

  

可能重复:
  Panel.Dock Fill ignoring other Panel.Dock setting

似乎当我将面板放在winforms中时,我得到了意想不到的结果。如果我有3个面板,我将它们全部停靠在顶部,以便希望它们都是1个接一个,我将最后一个停靠在应用程序的顶部,而不是最后一个停靠面板的底部。 / p>

我想我对winforms面板中的dock属性如何工作感到困惑!?每当我尝试布局我的应用程序时,我都会头疼,因为一个小组想要停靠在我不想要的地方。

3 个答案:

答案 0 :(得分:6)

使用Visual Studio中的“document outline”视图查看表单的层次结构。您将能够确保所有面板处于相同级别,在同一父级下,并且您将能够对它们进行重新排序以更改对接行为/优先级。

答案 1 :(得分:1)

我做了一些研究,在stackoverflow上发现了这个question 一旦我打开那个窗口并将面板向上移动到层次结构中,它就完全停靠了我的期望和想要的方式。我知道必须有某种类型的控制层次结构,我可以搞砸。

答案 2 :(得分:0)

你应该检查{{3p>

你可以尝试做:

     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();

                CreatePanels();
            }

            private void CreatePanels()
            {

//YOu should create panelGlobal on your winform and set DockStyle.Fill
                 panelGlobal.Controls.Add(CreatePanel("topPanel",DockStyle.Top,Color.Red));
                 panelGlobal.Controls.Add(CreatePanel("bottomPAnel", DockStyle.Bottom, Color.Gray));
                panelGlobal.Controls.Add(CreatePanel("fillPanel",DockStyle.Fill,Color.Snow));
            }

            private Panel CreatePanel(string panelName, DockStyle dockStyle,Color color)
            {
                return new Panel() { Name = panelName, Dock = dockStyle , BackColor=color};
            }
        }