设计动态面板

时间:2013-01-30 01:37:44

标签: c# winforms user-interface

我是C#的新手,我想在c#中为图像处理应用程序设计GUI。我有一个非常基本的基本布局,如下所示enter image description here

这里,图像平面是固定的,它将显示直播视频。我设计了所有按钮框架和侧面板。但我不知道如何动态更改我单击的每个按钮的侧面板。例如,如果我单击button1_1,我想在侧面板中找到一些东西,而对于button1_2,则需要其他一些东西。我该怎么做呢。

编辑:

感谢您的回答。我看到标签控件是一个选项。但我想要一个新的面板evertime点击一个按钮。这可以进一步开放形式。有可能吗?

3 个答案:

答案 0 :(得分:4)

好的,我们来看看。使用“TabControl”或“Panel”数组很容易。

1.使用TabControl进行操作。 您可以在TabControl中设计多个子标签中的GUI(如果您不知道请问请问。)。然后你在按钮点击事件中更改它,使你想要显示的子标签(这意味着使其可见并且对其他子标签不可见。)

2.用面板阵列做吧。 您可以使用panel []面板。在按钮单击事件中,您隐藏其他面板并显示所需的面板。

希望答案可以帮到你!

    private void button1_Click(object sender, EventArgs e)
    {
        tabControl1.SelectedIndex = 0;
        tabControl1.TabPages[0].Text = "First";
    }

    private void button2_Click(object sender, EventArgs e)
    {
        tabControl1.SelectedIndex = 1;
    }

    private void button3_Click(object sender, EventArgs e)
    {
        tabControl1.SelectedIndex = 2;
    }

答案 1 :(得分:2)

您可能希望在表单中添加拆分容器。

为每个按钮创建UserControl。

按钮点击事件的代码

//Button1Click Event
    private void button1_Click(object sender, EventArgs e)
    {
        UserControl1 m_UserControl = new UserControl1();
        splitContainer1.Panel2.Controls.Clear();
        splitContainer1.Panel2.Controls.Add(m_UserControl);
    }
    //Button2Click Event
    private void button2_Click(object sender, EventArgs e)
    {
        UserControl2 m_Usercontrol2 = new UserControl2();
        splitContainer1.Panel2.Controls.Clear();
        splitContainer1.Panel2.Controls.Add(m_Usercontrol2);
    }

如果要在运行时更改面板中的usercontrol显示,可以执行此操作。 如果我误解了你的问题,请纠正我。

答案 2 :(得分:1)

在WinForms中,您可以使用选项卡控件,只需在按下按钮时更改选定的选项卡索引。更具体地说,当它的click事件被触发时。 Here是使用TabControl的好教程,here是关于点击事件的教程。

修改

This是一个更好的教程。

由于您无法在不使用WPF的情况下隐藏tabcontrol的选项卡,因此如果您不喜欢它们的外观,则可能需要使用其他内容。如果你只有几个按钮和视图,那么一个好的解决方法就是使用面板。单击按钮1时,显示面板1并隐藏面板2,等等。这将是代码:

private void button1_Click(object sender, EventArgs e)
    {
        pane2.visible = false;
        pane1.visible = true;
    }

private void button2_Click(object sender, EventArgs e)
    {
        pane1.visible = false;
        pane2.visible = true;
    }

希望这能帮到你!