【问题标题】:Placing multiple panels in a single cell of TableLayoutPanel in C# Winforms在 C# Winforms 中的 TableLayoutPanel 的单个单元格中放置多个面板
【发布时间】:2019-08-08 15:01:33
【问题描述】:

我正在开发 C# Winforms 应用程序。我使用 TableLayoutPanel 将表单划分为表格单元格。对于表格布局的特定单元格,我想插入多个面板 - 一个接一个,以便我可以使用 BringToFront() 在面板之间切换(仅适用于该单元格)。

我在一个似乎有效的表单上尝试了同样的方法。在表格布局的单元格中,我只能在其中添加一个面板。当我尝试在该单元格中添加其他面板时,这些面板会嵌入到第一个面板中。这使得在面板之间切换变得困难。

我还尝试将所有需要的面板插入一个空面板(放置在单元格中)。但是,我不知道如何在它的子面板之间切换。

注意:面板的切换将由表格其他单元格中的 ComboBox 选择触发。

【问题讨论】:

  • 只需在单元格中添加一个面板,然后在其中添加其他面板。
  • 谢谢亚历山德罗!但是,我已经尝试过了。我无法弄清楚如何将所需的面板放在前面,因为它们的父级也将是一个面板,并且隐藏父级也会隐藏其子面板。
  • 将面板添加到List<Panel>。当 ComboBox 选择发生变化时,使用SelectedIndex 作为List<Panel> 的索引器,选择相应的Panel。将其设置为Enable = true.BingToFront()。禁用前一个(或所有其他面板,如果您没有跟踪当前显示的面板的逻辑)。使用专门的类作为面板切换处理程序可能会更好。或者一个包含所有逻辑的 UserControl。

标签: c# .net winforms layout software-design


【解决方案1】:

如果你想在面板之间切换,那总是会出错,因为底部面板将成为顶部面板的父级... @Hans Passant 在另一个主题中给出解决方案并引用:

这可以通过 View > (Other Windows) > Document Outline 解决,将顶部面板拖回表单。仍然非常痛苦,您通常必须手动编辑位置,并且稍后在设计器中对表单进行任何更改往往会导致面板回退。

有更好的方法来做到这一点。强烈建议创建 UserControls,它们有自己的设计界面。或者使用 RAD 方式并使用 TabControl 来代替

完整学分:Credits

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    相关资源
    最近更新 更多