【问题标题】:Form Panels Resizing表单面板调整大小
【发布时间】:2019-01-25 16:01:31
【问题描述】:

如何相应地调整表单内的面板大小?

我的表单有 3 个面板

如果我将 panel2.visible 设置为 false,panel3 会占用空间。

如果我将 panel1.visible 设置为 false,则 panel3 也会占用其余部分。

回到原始形式 - 所有 3 个面板都存在。

如果我将panel1.visible设置为false,则panel2和3占用panel1的空间

一旦面板 1 或 2 再次可见,面板 3 将恢复原状。

【问题讨论】:

  • 你有一些代码来展示你为解决这个问题所采取的方法吗?
  • 。我不认为只有几个属性或容器就足够了。您将不得不为此编写代码。使用VisibleChanged 事件!
  • @Steve 还没有代码,但我已经尝试过停靠和锚点属性但没有运气:-(
  • @Taw 我也试试看。
  • 你能给我更多关于你的问题的信息吗?我用 splitContainer 没问题

标签: c# winforms layout panel


【解决方案1】:

只是一个附加信息,似乎 tablelayout 可以解决我的问题,但我更喜欢@ANaik 解决方案。

            if (myPanel.Visible)
            {
                myPanel.Visible = false;

                tableLayoutPanel1.SetCellPosition(myPanel, new 
                TableLayoutPanelCellPosition(0, 1));
                tableLayoutPanel1.SetColumnSpan(myPanel, 2);

            }
            else
            {
                myPanel.Visible = true;

                tableLayoutPanel1.SetCellPosition(myPanel, new TableLayoutPanelCellPosition(1, 1));
                tableLayoutPanel1.SetColumnSpan(myPanel, 1);
            }    

【讨论】:

    【解决方案2】:

    似乎根据您的问题。即使面板 2 和 3 被隐藏,面板 1 也将始终位于顶部。 同样,面板 2 将始终左对齐。面板 3 将始终占用可用空间。

    请在面板控件上设置停靠属性。

    Panel1.Dock = top
    Panel2.Dock = left
    Panel3.Dock = fill
    

    还有一件事,当控件被隐藏时,它们的大小为 0。当可见时,将大小设置为默认值。

    我希望这会有所帮助。

    【讨论】:

    • 谢谢@ANaik,我会试试这个。
    • 成功了!我想我需要很多代码才能做到这一点。非常感谢,
    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 2013-08-25
    • 2012-05-27
    • 2011-08-14
    相关资源
    最近更新 更多