C# 如何将用户控件添加到面板

C# 如何将用户控件添加到面板,c#,winforms,visual-studio-2010,C#,Winforms,Visual Studio 2010,我已经在我的项目中创建了多个用户控件,我需要做的是能够在面板控件上在它们之间切换 例如,如果用户单击按钮1,则在删除面板上的每个控件后,userControl1将添加到面板中,依此类推 我有以下代码: panel1.Controls.Add(MyProject.Modules.Masters); 但它不起作用 我该怎么做?您必须实例化控件。您必须确保大小设置适当,或者为其提供适当的dockfill var myControl = new MyProject.Modules.Masters();

我已经在我的项目中创建了多个用户控件,我需要做的是能够在面板控件上在它们之间切换

例如,如果用户单击按钮1,则在删除面板上的每个控件后,userControl1将添加到面板中,依此类推

我有以下代码:

panel1.Controls.Add(MyProject.Modules.Masters);
但它不起作用


我该怎么做?

您必须实例化控件。您必须确保大小设置适当,或者为其提供适当的dockfill

var myControl = new MyProject.Modules.Masters();
panel1.Controls.Add(myControl);

您需要实例化一个新的MyProject.Modules.Masters

MyProject.Modules.Masters myMasters = new MyProject.Modules.Masters()
panel1.Controls.Add(myMasters);
这将只向panel1添加一个新控件。如果您还想在添加控件之前清除面板中的所有内容,如您在问题中所述,请首先调用以下命令:

panel1.Controls.Clear();
不仅仅是简单

panel1.Controls.Clear();
panel1.Controls.Add(new MyProject.Modules.Masters());
编辑:也许试试这个

panel1.Controls.Cast<Control>().ForEach(i => i.Dispose());
panel1.Controls.Clear();
panel1.Controls.Add(new MyProject.Modules.Masters());
panel1.Controls.Cast().ForEach(i=>i.Dispose());
panel1.控件。清除();
panel1.Controls.Add(新的MyProject.Modules.Masters());

MyProject.Modules.Masters
控件的类名或控件的实例?MyProject.Modules.Masters是控件的类名controls。清除将不会处理这些现有控件。