【问题标题】:how to open windows form in panel from the another form如何从另一个窗体在面板中打开 Windows 窗体
【发布时间】:2014-03-26 10:40:35
【问题描述】:

我正在使用 Windows 窗体 ASP.net C#

我在 panel1 中打开一个名为 form1 的表单。

form1 有一个按钮。单击此按钮,我想关闭 form1 并在同一个 panel1 中打开名为 form2 的新表单

我在panel1中打开了form1如下

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

请帮忙

【问题讨论】:

  • 您尝试过什么了吗?你哪里有问题?可以发一些代码吗?

标签: c# winforms


【解决方案1】:

首先-我建议您使用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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多