1

我决定为此创建一个聊天应用程序,我需要将单个表单运行 2 次(即)我需要在运行时将同一个表单作为两个不同的实例查看......是否有可能实现它。

注意:我不需要在任何事件中完成它。每当我运行我的程序时,必须运行 2 个实例。

4

2 回答 2

4

两种解决方案:

  • 只需构建您的可执行文件并根据需要运行尽可能多的实例。
  • 使用利用Application.Run 方法 (ApplicationContext)的更复杂的解决方案。请参阅下面的简化 MSDN 示例。

    class MyApplicationContext : ApplicationContext
    {
        private int formCount;
        private Form1 form1;
        private Form1 form2;
    
        private MyApplicationContext()
        {
            formCount = 0;
    
            // Create both application forms and handle the Closed event 
            // to know when both forms are closed.
            form1 = new Form1();
            form1.Closed += new EventHandler(OnFormClosed);
            formCount++;
    
            form2 = new Form1();
            form2.Closed += new EventHandler(OnFormClosed);
            formCount++;
    
            // Show both forms.
            form1.Show();
            form2.Show();
        }
    
        private void OnFormClosed(object sender, EventArgs e)
        {
            // When a form is closed, decrement the count of open forms. 
    
            // When the count gets to 0, exit the app by calling 
            // ExitThread().
            formCount--;
            if (formCount == 0)
                ExitThread();
        }
    
        [STAThread]
        static void Main(string[] args)
        {
    
            // Create the MyApplicationContext, that derives from ApplicationContext, 
            // that manages when the application should exit.
    
            MyApplicationContext context = new MyApplicationContext();
    
            // Run the application with the specific context. It will exit when 
            // all forms are closed.
            Application.Run(context);
        }
    }
    
于 2013-08-09T12:10:18.410 回答
1

是的,您可以轻松地创建同一表单的多个实例。例如:

new ChatWindowForm.Show();

另请参阅Control.Show()方法文档。

于 2013-08-09T12:10:11.927 回答