MessageBox.Show具有类似MessageBox.Show(ownerWindow,....)的表单.
通过分配所有者窗口我可以获得什么?
消息框是一个模式窗体,这意味着它的父窗口将被禁用,直到消息框被取消.
如果调用的Show()重载不采用所有者标识符,则通常会自动选择父表单.我在文档中找不到描述如何选择该表单的内容,但我的经验是,如果消息框显示在GUI线程内(即主线程或消息泵线程),则活动窗口为该线程被选为父级.
其他线程可能会创建没有父表单的消息框.这可能是一个糟糕的情况,因为它可能位于活动窗口后面,并且用户在关闭程序之前甚至不知道它在那里.为避免这种情况,您可以将应用程序主窗口的句柄传递给Show方法,该方法将在消息框的持续时间内禁用该窗口.
补充:我一直在想这个,现在我不太确定.您在下面给出的反射器片段让我觉得可能线程并不重要.(我的确说我在文档中找不到任何内容!)
我必须回过头来查看代码以确保,但我认为我曾经丢失在主窗体后面的消息框可能实际上是自定义消息框表单,在这种情况下我的经验是错误的,你永远不必提供父表单参数.
对困惑感到抱歉.
我现在的建议是永远不要提供这个参数,除非你需要活动窗口以外的东西作为主要形式.