【问题标题】:Designing a dynamic panel设计动态面板
【发布时间】:2013-01-30 01:37:43
【问题描述】:

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

这里,图像平面是固定的,它将显示一个实时流视频。我设计了所有的按钮框架和侧面板。但我不知道如何为我单击的每个按钮动态更改侧面板。例如,如果我单击 button1_1,我希望在侧面板中添加一些内容,而对于 button1_2,我希望在其中添加一些其他内容。我该怎么做呢。

编辑:

感谢您的回答。我看到选项卡控件是一个选项。但我想要一个新面板每次点击一个按钮。这可以进一步打开表格。有可能吗?

【问题讨论】:

  • 您对 WinForms 有信心吗,还是会考虑 WPF?
  • 我听说 WPF 需要更多时间。我想做它,因为它对于维护我的代码的其他程序员来说具有更简单的学习曲线。因为我们公司使用不同的语言。
  • 你说得对,WPF通常被认为有更陡峭的学习曲线。另一方面,它具有更好的数据绑定,并允许更好地分离表示和应用程序逻辑。如果你努力为你的应用程序创建一个测试套件,未来的维护者可能会比使用 WinForms 更感激。只是一个想法。

标签: c# winforms user-interface


【解决方案1】:

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

1.用 TabControl 来做。 您可以在多个子选项卡中的 TabControl 中设计 GUI(如果您不知道如何请询问。)。然后你在按钮点击事件中改变它,使 subTab 你想显示(这意味着让它对其他 subTabs 可见而不可见。)

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;
    }

【讨论】:

  • 你能提供一些关于tabcontrol和面板数组的教程或资源吗。谢谢。:)
  • 对不起,看不起。private void button1_Click(object sender, EventArgs e) { tabControl1.SelectedIndex = 0; } private void button2_Click(object sender, EventArgs e) { tabControl1.SelectedIndex = 1; } private void button3_Click(object sender, EventArgs e) { tabControl1.SelectedIndex = 2; }
  • 我在我的回答中编辑,希望你能理解,它只是改变了tabcontrol的SelectedIndex。
  • 谢谢。我实现了它。但我想为每个选项卡显示一些动态标题。反正我能做到吗?
  • @shivoham 是的。 tabControl1.TabPages[index].Text="Title";
【解决方案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);
    }

如果您想在运行时更改面板中显示的用户控件,您可以这样做。 如果我误解了你的问题,请纠正我。

【讨论】:

    【解决方案3】:

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

    编辑:

    This 是一个更好的教程。

    由于不使用 WPF 就无法隐藏选项卡控件的选项卡,因此如果您不喜欢它们的外观,您可能需要使用其他东西。如果您只有几个按钮和视图,一个很好的解决方法是使用面板。单击按钮一时,显示面板一并隐藏面板二等。下面是代码:

    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;
        }
    

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      相关资源
      最近更新 更多