【问题标题】:Having two active windows in a Winform applicationWinform 应用程序中有两个活动窗口
【发布时间】:2014-11-07 22:45:39
【问题描述】:

抱歉,这个问题很可能在某个时候被问过,但我什至不确定我应该搜索什么......

我有一个包含多个表单的 winform 应用程序。到目前为止,一次打开一个表单一直很好。但是现在,我有一个新表单,我想添加它,但我可以在使用其他表单时保持该表单打开。我什至不确定这叫什么,但我以前在其他应用程序中看到过它。

我确实找到了这个:Run two winform windows simultaneously

但是这个新窗口是一个运行线程的 winpipe 队列查看器。当我尝试使用

进行初始化时
Application.Run(new QueueViewer());

我收到错误消息:在单个线程上启动第二个消息循环不是有效操作。请改用 Form.ShowDialog。

这样做的问题是它会锁定程序无法执行任何其他操作,直到我关闭该表单。

感谢您的帮助!

【问题讨论】:

  • 您的问题没有多大意义-您可以随时显示任意数量的彼此独立的窗口。只有其中一个可以拥有焦点。如果这不是您想要做的,您应该添加更多细节。您链接的问题描述了您不应该尝试的事情。
  • 不调用Application.Run(),也不调用表单上的ShowDialog()方法,只调用Show()方法。

标签: c# winforms


【解决方案1】:

向您的项目添加一个表单(我们称之为Form2)。在您的代码中的某处(可能在按钮单击事件中)使用以下代码:

Form2 f = new Form2();
f.Show();  

Show 方法允许您与原始表单交互,而 ShowDialog 阻止与原始表单交互。

【讨论】:

  • 它似乎可以工作,但窗口会立即关闭...是否需要设置一个属性才能使其保持打开状态?
  • @ScottJohnson 不,这应该可以正常工作。尝试使用您尚未更改的全新表单,看看行为是否仍然存在。
  • 仍然立即关闭...我想知道它是否与生成后台工作人员(在我的主窗口中)有关?
  • 它不应立即关闭。确保您没有调用 CloseDispose 或使用 using 语句。
  • @ScottJohnson,我认为新表单的位置与主表单的位置相同。设置新表单的位置 ro 大小与主表单不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 2018-10-06
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2021-02-25
相关资源
最近更新 更多