【发布时间】:2012-05-31 00:06:47
【问题描述】:
以下代码按预期工作,但如果在禁用时“拖动”表单(当记事本退出时),表单将位于新位置。如何预防?
Enabled = false;
Process p = Process.Start("notepad");
p.WaitForExit();
Enabled = true;
【问题讨论】:
-
这个问题/答案或许能帮到你:stackoverflow.com/questions/907830/…
-
@MAV 谢谢。但我想知道是否有一些直接的方法,比如某种类型的“完整”禁用表单(或一些 simple 刷新事件队列)。
-
@ispiro,据我所知,在 MAV 的链接问题中捕获 WndProc 消息并过滤掉“MOVE”命令几乎是最直接的。我不知道您是否也想盲目地刷新表单消息队列。
-
在表单被禁用的情况下你是如何设法拖动窗口的很难猜到。 “Exists”也很难理解,应该是“exists”吗?改进您的问题。
-
@HansPassant 看看我的回答,我们在那里进行了一些讨论,他所说的确实正在发生,我猜这是一个错误。如果您在禁用时拖动 Form1,或者正在发生 Form.ShowDialog,当您通过启用它返回到第一个窗体或 Form2 返回一个对话框结果时,第一个窗体将移动到您尝试拖动它的位置。奇怪但真实。