【问题标题】:panels won't dock where I want them to in winforms [duplicate]面板不会停靠在我希望它们在 winforms 中的位置 [重复]
【发布时间】:2012-10-25 14:34:38
【问题描述】:

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

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

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

【问题讨论】:

  • 您是否可以分享代码或图像以向我们展示您想要实现的目标?那样会更容易回答
  • 你试过设置z-order吗?我似乎记得这会影响对接。
  • 确保面板不相互包含。

标签: c# winforms


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我做了更多研究,在 stackoverflow 上发现了这个 question 一旦我打开该窗口并将面板在层次结构中向上移动,它就会完全按照我的预期和想要的方式停靠。我知道必须有某种类型的控制层次结构我可以弄乱。

    【讨论】:

    • 请不要重复答案,原始问题的链接就足够了。
    • 当他已经回答时,我正在输入这个。甚至没有看到我发布的 Romain 的答案..
    【解决方案3】:

    Ypu 应该检查this

    你可以试试:

         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};
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 2021-03-29
      • 2012-06-08
      相关资源
      最近更新 更多