【发布时间】:2013-09-04 22:58:05
【问题描述】:
我在某个 Form 上调用 Form.Show() 并在之后做一些事情 导致显示表单上的一些更新。
我想在这段时间内使用 SetWindowPos 将此窗口窗体移动到另一个位置和另一个进程。 可悲的是,调用 SetWindowPos 完全没有任何作用。 可能是因为它从不闲置?
知道谁来解决这个问题吗?
谢谢
编辑:一些代码:
main.Show();
main.initBase(); //Takes 2-3 seconds
main.HideMainForm(); //Moves the form to (10000, 10000), to hide it (can't change that it's an old programm)
在main.Shown 事件中,我调用了另一个程序,而不是调用
SetWindowPos(pd.CurrentHandle, HWND_TOPMOST, r.X, r.Y, r.Width, r.Height, SetWindowPosFlags.DoNotChangeOwnerZOrder);
其中 r 是所选显示器的矩形
我试过了
EventHandler ev = new EventHandler((s, e) =>
{
main.Close();
ev = new EventHandler((s2, e2) => { });
});
main.Shown += ev;
main.ShowDialog();
main.Show();
效果很好,但只是丑陋的代码,我正在努力寻找更好的解决方案。
【问题讨论】:
-
调用
SetWindowPos成功? -
stackoverflow.com/q/8443502/56778 的回答和类似问题表明这是可能的。给我们看一些代码。也许你错过了什么。
-
@AlessandroD'Andria 是的。
-
@JimMischel 添加了一些代码也许有帮助