【问题标题】:WinForms SplitContainer and its spacing and resizingWinForms SplitContainer 及其间距和大小调整
【发布时间】:2013-04-09 09:52:15
【问题描述】:

我似乎很难按照自己喜欢的方式调整 SplitContainer。我有以下名为 frmMain 的表单:

在加载代码的表单中,我必须遵循以下代码:

With MainContainer
    .IsSplitterFixed = True
    .Dock = DockStyle.Fill
    .SplitterDistance = 200
    .FixedPanel = FixedPanel.Panel1
    .Panel1.BackgroundImage = Resources.My.Resources.ResourceFile._001
    .Panel2.BackColor = Color.White
    .Panel2.AutoScroll = True
End With

当我运行代码时,我得到以下信息:

我想删除灰色分离器,因为它没有用。这是不是普通的美 错误,是否可以删除它?

SplitContainer 的第二个问题是,如果我调整窗口大小,Panel1 中的 backgroundImage 和 Panel2 中的白色不会随窗口调整。我搜索了 Resize 代码的高低,但我找不到它。 Panel2 具有用户控件,例如。仪表板并以这种方式加载:MainContainer.Panel2.Controls.Add(Dashboard)

Panel2 是否也可以自动调整到窗口的宽度,以便您只有一个水平滚动条?

感谢您阅读我的问题,希望您能帮助我解决 SplitContainer 的问题。祝你有美好的一天。

【问题讨论】:

    标签: vb.net winforms visual-studio splitcontainer


    【解决方案1】:

    我想删除灰色分离器,因为它没有用。这是一个常见的美容错误吗?有没有可能消除它?

    如果您不希望用户看到或移动拆分器,为什么要使用拆分容器?作为替代方案,请考虑使用配置为 1 行和 2 列的 TableLayoutPanel。第一列将是绝对 200 像素宽,而第二列将设置为 100% 宽。在两个单元格中的每一个单元格中,您都可以放置一个面板,该面板停靠并设置为具有 0,0,0,0 的边距。

    SplitContainer 的第二个问题是,如果我调整窗口大小,Panel1 中的 backgroundImage 和 Panel2 中的白色不会随窗口调整。 ... Panel2 是否也有可能自动调整到窗口的宽度,以便您只有一个水平滚动条?

    虽然我没有模拟您当前的解决方案,但我无法通过快速模拟我上面提出的解决方案来复制这些问题。关于自动滚动,出现滚动条的唯一原因是控件不在屏幕边缘或可用屏幕空间小于面板的最小尺寸。

    【讨论】:

    • 感谢您的建议。我今晚会试试看。我要再次感谢您的建议和您对我的问题的耐心。
    【解决方案2】:

    你有两个选择:

    • 使用TableLayoutPanel(正如@erdomke 建议的那样)
    • 使用 2 个Panel 控件

    对于 2 个面板控件,将 panel1 停靠到 Left,并将 panel2 停靠到 Fill。要使用可调整大小的 UserControl 填充 panel2,请将其 Dock 属性也设置为 Fill。

    【讨论】:

    • 这是一个额外的奖励,我今晚要试试。非常感谢你。
    • 我还有一个问题。我成功地制作了面板及其配置。现在就像,当我将控件添加到侧边栏时,我在那里放置了一个链接来为侧边栏和主加载另一个面板。我需要在用户控件中执行该事件,但面板位于 frmMain。我可以使用公共函数解决这个问题还是有更好的方法?
    • 我不确定我是否真的遵循:当我将控件添加到侧边栏时,我在那里放置了一个链接来为侧边栏和 Main 加载另一个面板。 ..??? “链接”是什么意思?您可以在主窗体上提供公共方法,或通过UserControl 公开事件或方法。