让我们考虑这个场景:一个新创建的 Windows 窗体应用程序,其中除了原始 Form1 之外我还创建了 Form2。
第一个问题: 我希望这两种形式都在启动时显示,所以我基本上想添加 Application.Run(new Form2());在 main 中,在 Form1 的类似命令之后,但因为我读到我不能使用多个线程来运行这两个表单,我该怎么做?
第二个问题: 如何从外部类甚至主类访问表单方法,因为即使我创建一个表单实例,我似乎也无法直接访问它们。
第三个问题: 我需要在表单中显示消息缓冲区,通常我会使用一个简单的文本框,但问题是我需要添加诸如已读标记之类的内容到所有单独的消息。关于如何做到这一点有任何线索吗?
1:查看 ApplicationContext 类。
2:方法需要公开,但这里要小心,因为您将开始遇到紧耦合的问题。 对于简单的实现,您需要传递对调用对象的引用(考虑研究观察者模式)。
3:查看 DataGridView。
由于 WinForm 是线程安全的,除非您以 async/await 或 Thread.Start/Run 启动,所以您可以简单地在 Program.cs 中创建一个对象并解析为两个窗口的参数。然后他们可以通过这个对象交换信息。您还可以在两种表单中创建事件,并解析表单的回调给我,它们互相调用方法。