C#使每个面板处于单独的视图中

时间:2013-10-29 21:42:16

标签: c# panel

我想知道如何在应用程序中调整我的视图。让我解释一下。

而不是构建我的视图并在一个屏幕中添加所有组件。我想说每个面板都放在自己的类/表单中,然后有一个主表单,我可以添加和删除这些“模块化”面板。

这可能吗?我将如何去做?

2 个答案:

答案 0 :(得分:4)

在Windows窗体中,有一个名为UserControl的空组件的概念,可以随意设计并随时添加到另一个组件或表单容器中。 UserControl经常用于创建灵活且可交换的UI。您可以在Visual Studio中创建UserControl item,如下所示:

Add new UserControl to an existing project

命名新控件:

Naming new control and adding it

之后,您可以设计UI控件:

Design control

完成设计后,编译项目/解决方案,然后转到要添加新设计控件的表单。在工具栏面板中,您将看到新的UserControl,可以使用拖放功能将其添加到表单中。掉落(用鼠标):

Add new user control to the form

您可以根据需要创建任意数量的UserControl,并在表单中添加/删除它们。

所有这些步骤都可以在代码中完成。为了创建这种新视图,您需要创建一个继承预定义UserControl类的新类:

public class EditorUserControl : UserControl
{
}

每个Control元素都有一个ControlsCollection,用于保存/包含在显示UI时绘制的Control类型的组件。要将新控件添加到主面板,您需要将其添加到控件集合中:

public partial class EditorUserControl : UserControl
{
    public EditorUserControl()
    {
        var button = new Button();
        button.Text = "Import";
        this.Controls.Add(button);
    }
}

请注意,手动添加组件时,您负责调整大小并定位它们。预定义的布局面板可以帮助您:

现在剩下的就是将新用户控件添加到主窗体,就像将UI元素添加到您自己的控件一样:

var simpleEditor = new EditorUserControl();
simpleEditor.Dock = DockStyle.Fill;
this.Controls.Add(simpleEditor);

您可以通过其预定义属性调整UI控件设置。

您可以混合使用预定义的容器和UserControl来实现所需的UI:

mixed UI

C#和VS和.NET有很多很好的初学者教程:

答案 1 :(得分:1)

这绝对是可能的。我将使用WinForms,但在WPF中有类似的方式,如帧。

在WinForms中,您可以为每个“模块化”面板创建一个新的用户控件,该面板将自动创建.cs.designer.cs文件,就像在普通Form中一样。然后,您可以向面板添加逻辑和功能,就像它们本身就是表单一样。剩下的就是将逻辑添加到表单中以在启动时加载默认面板并考虑如何将其他面板带入视图的方式(例如,下一个按钮或在选项卡控件中的每个选项卡上都有一个面板) 。通过创建所需面板的实例并将其添加到表单/控件的Controls属性中,可以显示表单中的面板(或任何其他用户控件),如下所示:

 public Form1()
 {
     InitializeComponent();
     MyPanel panel = new MyPanel();
     this.Controls.Add(panel);
 }