如何在以下面板示例中使所有控件可见
Posted
技术标签:
【中文标题】如何在以下面板示例中使所有控件可见【英文标题】:How to make all controls visible in following panel example 【发布时间】:2015-10-26 18:16:02 【问题描述】:我是 winforms 的新手,我遇到了我自己无法解决的问题。
我想动态地将按钮添加到图片中的“右下面板”。问题是,如果我需要添加大量按钮,那么来自上述面板底部的按钮将覆盖有图片中面板后面的控件(面板)。这个案例显示了我首先将“右下面板”添加到“右面板”然后“右上面板”。
如果我反转它,首先将“右下面板”添加到“右面板”,然后将“右上面板”添加到“右面板”,那么“右上面板”会覆盖右下角顶部的两个按钮面板,但带有“右下面板”滚动条的所有其他按钮(包括右下面板底部的按钮)。
我的问题是如何显示“右下面板”中的所有按钮?
提前谢谢你,我希望你能理解我的英语。
更新: 谢谢你们的帮助,但我没有解决我的问题,尽管我尝试了你所有的提示。现在我给你更详细的描述我想要实现的目标。
-
使用 splitContainers 我可以实现我想要的,但前提是我拆分“根”面板。这是那个表格,你可以看到我在 spliter2.panel2 中滚动,我可以到达所有按钮(这正是我需要的):
但我需要添加此面板的表单如下所示:
表单添加“根”面板,“根”面板广告 3 个面板(两个黑色面板停靠在顶部和底部),第三个面板是我们所说的面板,它被停靠以填充。
现在,在我尝试减小表单大小的地方,我得到了这个:
现在我没有在 spliter2.panel2 中滚动,并且我的一些按钮消失了。我需要在 spliter2.panel2 中滚动,并且我需要滚动才能到达所有按钮。
有可能吗?怎么做?再次感谢大家...
更新 2: 我需要将相同的行为添加到另一种形式。主要差异(您可以在下图中看到)是停靠面板上的另一个水平拆分器(根面板添加了顶部、停靠和底部面板 >> 停靠面板添加了水平拆分器 >> dockPanelSplitter.Panel1 添加了我们所说的面板):
虽然我设置了 splitter3.Panel2 = true 的 AutoScroll 属性,但我还是没有滚动。
【问题讨论】:
如果您不喜欢停靠时“右上角”和“右下”面板的行为方式,那么您需要使用其他东西。在您的“右侧面板”中,添加一个 TableLayoutPanel 并将其设置为一列和两行。您将“右上角”和右下角面板添加到 TableLayoutPanel 中的行。现在您可以在 TableLayoutPanel 中控制两行的大小关系... 【参考方案1】:使用 2 个SplitContainers
,一个垂直,一个水平,第二个在第一个的 Panel2
内,然后像这样动态添加按钮(或通过 VS Designer):
private void Form1_Load(object sender, EventArgs e)
Button button = new Button();
button.Text = "Button1";
button.Location = new Point(0, 10);
splitContainer2.Panel2.Controls.Add(button);
button = new Button();
button.Text = "Button2";
button.Location = new Point(0, 50);
splitContainer2.Panel2.Controls.Add(button);
结果:
编辑:为了在新场景中与其他面板一起使用滚动条,请执行以下操作:
splitContainer2.Panel2.AutoScroll = true;
结果:
【讨论】:
另外,请尝试将 ToolStripContainer 与 toolStrips 中的按钮(ToolStripMenuItem 或 ToolStripButton)一起使用,而不是使用普通按钮 - 它们与 SplitContainers 结合使用效果很好! 拜托,你能检查我的问题更新。您的建议效果很好,但这并不能解决我的问题...提前谢谢您... 这样做:splitContainer2.Panel2.AutoScroll = true;
抱歉,我现在需要添加完全相同的行为,但场景略有不同。请检查更新。你能给我一些关于 Windows 窗体设计器的教程和资源的链接吗?只是为了避免我以后的问题:) 谢谢你所做的一切......
随着拆分容器和面板数量的增加,很容易在其中迷失,将控件放置在错误的面板上,在错误的面板上启用自动滚动等。所以,请确保您重新清楚。还有一件事:即使您在正确的面板上将自动滚动设置为 true,滚动条也只会在必要时显示。至于教程,我没有最喜欢的。如果你用谷歌搜索,我相信有很多。以上是关于如何在以下面板示例中使所有控件可见的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Delphi 的 OLE 自动化过程中使 Word 不可见