2014-03-26 234 views
1

我正在使用Windows窗体ASP.net C#如何从另一个窗体打开窗体中的窗体

我有我在其中打开名为form1的窗体的panel1。

form1有一个按钮。此按钮clicke我想关闭Form1并在同一PANEL1

我在PANEL1打开form1中打开新的形式命名窗口2如下

Form1 frm = new Form1(); 
frm.TopLevel = false; 
frm.FormBorderStyle = FormBorderStyle.None; 
panel1.Controls.Clear(); 
panel1.Controls.Add(frm); 
frm.Visible = true; 

请帮

+1

你还尝试过什么吗?你在哪里遇到问题?你可以发布一些代码吗? – Hyarantar

回答

2

首先 - 我建议您使用User Controls,这些应该被用作其他控件的可重用容器。 Forms应该表示窗口。因此,将窗体用作另一个窗口上托管的控件容器并不是一个好主意。如果您需要能够在面板和单独的窗口中显示相同的数据,请在带有面板的窗体上和Form1上使用相同的用户控件。

因此,用户控制。将它们添加到面板是非常简单的:

UserControl1 control1 = new UserControl1(); 
control1.Dock = DockStyle.Fill; 
control1.SomethingHappened += UserControl1_SomethingHappened; // see below 
panel1.Controls.Clear(); 
panel1.Controls.Add(control1); 

对有能力切换用户控件,您可以添加事件UserControl1,提高其点击按钮时:

// UserControl1 code 
public event EventHandler SomethingHappened; 

private void Button1_Click(object sender, EventArgs e) 
{ 
    if (SomethingHappened != null) // notify listeners, if any 
     SomethingHappened(this, EventArgs.Empty); 
} 

然后在你的主处理这个事件形式:

// MainForm code 
private void UserControl1_SomethingHappened(object sender, EventArgs e) 
{ 
    UserControl1 control1 = (UserControl1)sender; 
    sender.SomethingHappened -= UserControl1_SomethingHappened; 

    UserControl2 control2 = new UserControl2(); 
    control2.Dock = DockStyle.Fill; 
    panel1.Controls.Clear(); 
    panel1.Controls.Add(control2); 
} 
相关问题