|
1
5
是的,这不能正常工作的设计。对话框将禁用程序显示的所有窗口。所以它是模态的。当您隐藏对话框时,就没有可以获得焦点的窗口了。Windows被迫找到另一个窗口来将焦点交给它。这将是另一个应用程序拥有的窗口。你自己的窗户将隐藏在它后面。 有更多的副作用,对话框也会关闭。因为所有的窗口都被禁用了,所以用户再也不能回到你的程序了。这都是不足为奇的行为。Bug是一个强有力的词,但是如果它在关闭对话框之前首先重新启用所有窗口,它当然会工作得更好。但是关闭对话框已经是不受欢迎的行为。 不要为对话框调用Hide()。只需将DialogResult属性设置为DialogResult.取消为了达到完全相同的效果,减去焦点问题。如果要再次显示对话框,则必须将其重置为“无”。那真是个虫子。 |
|
|
2
1
根据文件。 Form.Close method Form.ShowDialog 方法。引用:
因此,也许有一些方法可以将焦点返回到应用程序(例如,通过windowsapi)。但是打电话方便多了 Form.Close |