Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何在VisualStudio中使用designer视图设计表单的多个状态?_Visual Studio_User Interface - Fatal编程技术网

Visual studio 如何在VisualStudio中使用designer视图设计表单的多个状态?

Visual studio 如何在VisualStudio中使用designer视图设计表单的多个状态?,visual-studio,user-interface,Visual Studio,User Interface,这是个愚蠢的问题吗?我试图在C#Visual Studio的神秘世界中漫游。我希望能够在运行时的某个时间点替换面板,但是designer视图只有窗体的单个状态的静态视图 例如,表单上可能有panel1,带有按钮1和picturebox1。然后,如果用户按下按钮1,panel1将替换为panel2。面板2有按钮2和图片框2 我知道如何在设计师身上制作panel1。有没有什么方法可以让我使用设计师来制作panel2?您是否可以只使用设计器来创建表单的一种状态,然后手动执行任何其他状态?我没有专门使用

这是个愚蠢的问题吗?我试图在C#Visual Studio的神秘世界中漫游。我希望能够在运行时的某个时间点替换面板,但是designer视图只有窗体的单个状态的静态视图

例如,表单上可能有panel1,带有按钮1和picturebox1。然后,如果用户按下按钮1,panel1将替换为panel2。面板2有按钮2和图片框2


我知道如何在设计师身上制作panel1。有没有什么方法可以让我使用设计师来制作panel2?您是否可以只使用设计器来创建表单的一种状态,然后手动执行任何其他状态?

我没有专门使用C#form designer,但通常您设计表单的初始状态,并在代码中执行其余(所有动态更改)操作。现在,可以将panel2放在窗体上,使其不可见,并在按下按钮1时切换面板的可见性,但这很可能不是一个好的解决方案。

我不知道有什么方法可以在设计器中显示窗体的不同状态。然而,听起来好像你想要做的是两个不同的用户控件。我建议您创建一个表单,可以在代码中的两个用户控件之间切换。 这并不完全是您所要求的,但至少现在您不必在设计器之外对不同的面板进行编码。 这是您需要做的:

  • UserControlPanel1和UserControlPanel2,用于设计视图的不同布局
  • PanelLoaderForm,用于为加载不同的用户控件留出空间。根据需要,您可以实现代码来显示不同的用户控件
  • 这是VB.NET,但PanelLoadPerform中的代码可能如下所示:

    Private Sub LoadUserControl()
       If UsePanel1 Then
          Controls.Add(new UserControlPanel1())        
       Else
          Controls.Add(new UserControlPanel2())        
       End If
    End Sub
    

    然后,如果要在两个调用控件之间切换,请在添加新控件之前删除(oldControl)或其他内容。

    没错,因为这会产生很大的表单开销。特别是如果你有很多控件,那么“在两个用户控件之间切换”是什么意思?我编辑了我的答案,希望它能澄清我的意思。如果需要详细说明,请回来。