これは非常に些細な問題ですが、私はそれを解決する方法を見つけることができないようです。私はこれに対する答えを知っているべきだと思うので私を困らせますが、私は間違った用語を探すか、間違ったメソッドとプロパティを調べています。
2つの場所から呼び出される構成ダイアログがあります。
最初は、正しく機能しているフォームのボタンからです-ご想像のとおりです。
2つ目は、システムトレイのnotifyIconのコンテキストメニューからですが、ここでは画面の左上に表示されます。理想的には、メイン画面の中央、またはシステムトレイの近くに表示されるようにします。
私はLocation
を設定しようとしましたが、これはdialog.ShowDialog()
が呼び出されたときにオーバーライドされるようです。
dialog.ShowDialog(IWin32Window)
オーバーロードを使用してみましたが、ウィンドウハンドルとしてnull
を渡したくないようです。
代わりにdialog.Show()
を使用してみましたが、(これが原因で問題が発生している可能性があります)場所を設定しても、一貫した結果が得られないようです。
dialog.Parent
プロパティの設定も試しましたが、もちろん例外が発生しました。
(うまくいけば)いくつかの答えを見ると答えが明白であることを理解するつもりですが、現時点では完全に行き詰まっています。
回答をありがとう-明らかだったと思いましたが、いつものように、間違ったルートを見下ろすことに固執しました。さらに厄介なのは、このプロパティをデザイナーから使用したことです。
Form.StartPosition
プロパティをFormStartPosition.Manual
に設定し、次に Form.Location
プロパティを目的の場所に設定できます。 ShowDialog
を呼び出すと、フォームが目的の場所に表示されます。
MyForm frm = new MyForm();
frm.StartPosition = FormStartPosition.Manual;
frm.Location = new Point(10, 10);
frm.ShowDialog();
フォームのStartPositionプロパティを試してください。