C# 以编程方式更改窗体控件

C# 以编程方式更改窗体控件,c#,.net,winforms,visual-studio-2012,C#,.net,Winforms,Visual Studio 2012,我不确定是否可以这样做,但我想知道是否有可能以编程方式完全更改窗体上的控件,类似于安装程序的情况;当您单击“下一步”按钮时,表单不会隐藏或关闭并打开下一个表单,它只会加载一组不同的控件(至少它是这样显示的) 在VisualStudio中使用C#可以做到这一点吗?或者您必须使用选项卡或隐藏面板吗?是的,您可以通过编程方式对控件执行任何操作。您使用的设计器也会在后台生成C代码 为了向窗体中添加新控件,可以使用form.Controls.add(control c)方法。可以使用从控件继承的任何类(按

我不确定是否可以这样做,但我想知道是否有可能以编程方式完全更改窗体上的控件,类似于安装程序的情况;当您单击“下一步”按钮时,表单不会隐藏或关闭并打开下一个表单,它只会加载一组不同的控件(至少它是这样显示的)


在VisualStudio中使用C#可以做到这一点吗?或者您必须使用选项卡或隐藏面板吗?

是的,您可以通过编程方式对控件执行任何操作。您使用的设计器也会在后台生成C代码


为了向窗体中添加新控件,可以使用
form.Controls.add(control c)
方法。可以使用从
控件
继承的任何类(
按钮
列表框
等)。要删除它,请使用
remove
方法,而不是
Add

我认为您要查找的是UserControl。UserControl就像表单一样,您可以将其用作其他控件的容器。 您可以找到一个演练

对于您提到的安装程序或一般的向导,您可以为每个步骤设计不同的UserControl,并将它们加载到表单中的保留区域中。保留区域可以是面板。 例如,假设您有一个按钮,该按钮调用向导步骤号作为参数的方法:

UserControl _step1Control = new UcStep1Control;
UserControl _step2Control = new UcStep2Control;
private void SetStep(int stepNumber)
{
    panel1.Controls.Clear();
    switch(stepNumber)
    {
        case 1:
            panel.Controls.Add(_step1Control);
            break;
        case 2:
            panel1.Controls.Add(_step2Control);
            break;
        default:
            break;
      }
}

谢谢,我以为会是这样的。是否可以使用设计器构建表单的整个视图,然后在运行时将其加载到表单中?这取决于加载方式。设计器生成的内容位于文件[FormName].Designer.cs中。如果你看看那里,你会发现完全正确的c代码,你可以复制/粘贴(通过一些调整)到你自己的方法中。