呼び出された場所と同じウィンドウに新しいフォームを表示したいと思います。以下のようなコードでPrimaryScreenまたはVirtualScreenにこのフォームを表示する方法を知っています。
MyForm.Location = Screen.PrimaryScreen.Bounds.Location;
しかし、私はそれを現在の画面に表示したいと思います。それを見つけて現在の画面に表示する方法はありますか?
呼び出された場所と同じウィンドウに新しいフォームを表示したいと思います。以下のようなコードでPrimaryScreenまたはVirtualScreenにこのフォームを表示する方法を知っています。
MyForm.Location = Screen.PrimaryScreen.Bounds.Location;
しかし、私はそれを現在の画面に表示したいと思います。それを見つけて現在の画面に表示する方法はありますか?
現在の画面の中央にフォームを表示するために、次のようなことを行いました。
var screen = Screen.FromPoint(Cursor.Position);
myForm.StartPosition = FormStartPosition.Manual;
myForm.Left = screen.Bounds.Left + screen.Bounds.Width / 2 - myForm.Width / 2;
myForm.Top = screen.Bounds.Top + screen.Bounds.Height / 2 - myForm.Height / 2;
同じ手法を使用できますが、PrimaryScreenを使用する代わりに、Screen.FromPointとCursor.Positionを使用して画面を取得します。
Screen screen = Screen.FromPoint(Cursor.Position);
MyForm.Location = screen.Bounds.Location;
StartPosition を Manual に設定していないようです。
これにより、アクティブな画面でフォームが開きます。StartPosition のその他の値については、これを参照 してください。
既に親フォームがあり、同じ画面で新しいフォームを開きたい場合は、ShowDialog メソッドに親フォームへの参照を与えnewForm.ShowDialog(this);
ますthis
。フォームは別の画面にあります。