如何在以下面板示例

时间:2015-08-04 11:05:53

标签: c# .net winforms

我是winforms的新手,我有自己无法解决的问题。

enter image description here

我想动态地从图片中添加按钮到“右下方面板”。问题是,如果我需要添加大量按钮,那么来自所提到面板底部的按钮将覆盖在图片后面板的控件(面板)上。这个案例显示我首先将“右下方面板”添加到“右侧面板”然后“右上方面板”。

如果我反过来,首先将“右下方面板”添加到“右侧面板”,然后将“右上方面板”添加到“右侧面板”,然后“右上方面板”覆盖右下方顶部的两个按钮面板但“右下方面板”的滚动条可以到达所有其他按钮(包括右下方面板底部的按钮)。

我的问题是如何显示“右下方面板”中的所有按钮?

提前谢谢你,我希望你能理解我的英语。

更新: 谢谢大家的帮助,但我没有解决我的问题,虽然我尝试了你的所有提示。现在我给你更详细的描述我想要实现的目标。

  1. 使用splitContainers,我实现了我想要的,但前提是我拆分“root”面板。这是表单,你可以看到我在spliter2.panel2中滚动,我可以到达所有按钮(这正是我需要的):
  2. enter image description here

    但我需要添加此面板的表单如下所示:

    enter image description here

    表单添加“root”面板,“root”面板广告3个面板(两个黑色面板停靠在顶部和底部),第三个面板是我们所说的面板,并且停靠填充。

    现在,在我尝试减少表单大小的地方,我得到了这个:

    enter image description here

    现在我没有在spliter2.panel2中滚动,我的一些按钮消失了。我需要在spliter2.panel2中滚动,我需要滚动才能到达所有按钮。

    有可能吗?再次感谢大家......

    更新2: 我需要向另一个表单添加相同的行为。主差异(你可以在下面的图片上看到)是停靠面板上的另一个水平分割器(根面板添加顶部,底座和底部面板>>停靠面板添加水平分割器>> dockPanelSplitter.Panel1添加面板我们说话约):

    enter image description here

    虽然我设置了splitter3.Panel2 = true的AutoScroll属性,但我没有滚动。

    enter image description here

1 个答案:

答案 0 :(得分: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);
    }

结果:

enter image description here

编辑:要在新方案中使用其他面板获取滚动条,请执行以下操作:

    splitContainer2.Panel2.AutoScroll = true;

结果:

enter image description here