私は特定のフォームで 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();
これは正常に動作しますが、醜いコードであり、より良い解決策を見つけようとしています。