【问题标题】:Starting the same form more than once多次启动同一个表单
【发布时间】:2014-02-19 16:13:12
【问题描述】:

我目前有一个项目,其中包含一个名为 Panel1 的表单。

没有类或表单中的任何内容,因为所有代码都保存在我的控件库中。

我可以使用我的 4 个用户控件之一启动表单的单个实例,但是我希望通过面板使用相同的表单在不同的窗口中启动每个控件。

我已经使用了 program.cs 来允许这样做,但是每个表单都需要在打开下一个表单之前关闭。

有人有什么想法吗?

这不是引用的问题的重复。因为我正在尝试打开 1 个表单,但当前使用不同的用户控件实例。

【问题讨论】:

  • 这四种形式中的哪一种应该是您应用程序的主要形式?或者你已经有了主表单(其他表单)?
  • 请将您一直在使用的代码发布到您的 program.cs 文件中。现在一切都只是猜测

标签: c# winforms


【解决方案1】:

试试这个,我同时运行两个表单

 static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        var thread = new Thread(ThreadStart);
        // allow UI with ApartmentState.STA though [STAThread] above should give that to you
        thread.TrySetApartmentState(ApartmentState.STA);
        thread.Start(); 
        Application.Run(new Form1());

    }
    private static void ThreadStart()
    {
        Application.Run(new Form2()); 
    }

}

【讨论】:

    【解决方案2】:

    使用form.Show() 而不是form.ShowDialog() 可以多次打开表单而无需关闭它。

    【讨论】:

    • 主窗体没有ShowShowDialog,以Application.Run(new Form1());开头
    • @Pierre-LucPineault 你说的主要形式是什么?注意:每个表单上都有ShowShowDialog
    • 他想用 4 次相同的表单(但内部有不同的用户控件)启动他的应用程序。当然,添加更多 Application.Runs(我猜这就是“使用 program.cs”的意思)来复制它是行不通的,因为它会等待当前表单关闭。
    • @Pierre-LucPineault 不确定。他没有说开始申请
    • 尝试在program.cs中堆叠几个Application.Run,​​你会看到每个都需要关闭才能打开下一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 2021-10-28
    • 1970-01-01
    相关资源
    最近更新 更多