添加一个容器控件(如果我没记错的话,工具箱中有一个容器部分?),就像一个面板。为您想要动态切换的内容创建用户控件。所以像一个'HomePage'用户控件和一个'LoginPage'用户控件。将要显示的用户控件动态添加到容器中。如果需要,将其从容器中删除并添加不同的用户控件:
Panel myPanel = new Panel();
LoginPage ctlLoginPage = new LoginPage();
HomePage ctlHomePage = new HomePage();
//add the loginpage to the panel first
myPanel.Controls.Add(ctlLoginPage);
...do stuff...
//remove whatever control is currently in the Panel
myPanel.Controls.Clear();
//add the other control, the HomePage control instead now
myPanel.Controls.Add(ctlHomePage);
..do other stuff...
我通常这样做是为了让表单本身保持打开状态,以添加可能在不同“页面”之间共享的通用控件和内容。
编辑:请注意,我通常会在设计器中添加面板,而不是在代码中动态创建它。这只是一个例子。
编辑:您的主窗体和用户控件之间的交互可以通过几种不同的方式来处理,我并不是说这些都是正确的方法。
- 您在 Mainform 上为 Panel 创建一个静态属性,以便您可以随时访问它来交换控件。
在此示例中,我还将为其添加一个静态方法
enum PanelControlsEnum {HomePage, LoginPage};
public static Panel MyContainerPanel {get;set;}
public static void SwitchPanelControls(PanelControlsEnum selControl){
..put your switch panels code here..
}
然后在您的用户控件中调用预定义的方法,例如:
MainForm.SwitchPanelControls(PanelControlsEnum.HomePage);
- 另一种方法是在主窗体上而不是在窗体内绑定按钮单击事件。
像这样:
HomePage ctlHomePage = new HomePage();
ctlHomePage.Click += MyClickEvent;
myPanel.Controls.Add(ctlHomePage)
...
private void MyClickEvent(object sender, RoutedEventArgs e)
{
..switch user control code here...
}