ユーザー画面の上にWindowsフォームをドッキングできるかどうか知りたいのですが。フォームの位置を必要な座標に手動で設定することで、これを実行しようとしています。ただし、この方法を使用すると、ユーザーはフォームをドラッグするだけでフォームの位置を変更できます。このウィンドウフォームは、作成中のプロジェクトのメニューとして機能するため、フォームを画面の上部にドッキングさせたいと思います。
どうもありがとう。:)
ユーザー画面の上にWindowsフォームをドッキングできるかどうか知りたいのですが。フォームの位置を必要な座標に手動で設定することで、これを実行しようとしています。ただし、この方法を使用すると、ユーザーはフォームをドラッグするだけでフォームの位置を変更できます。このウィンドウフォームは、作成中のプロジェクトのメニューとして機能するため、フォームを画面の上部にドッキングさせたいと思います。
どうもありがとう。:)
列挙値Control.Dock
の1つと一緒にプロパティを使用することを検討します。DockStyle
Layout
選択したものに応じてフォームのコントロールを異なる方法でレイアウトできるように、これも試してみる必要があるかもしれませんDockStyle
。
私の見解では、フォームをドッキングする値をControl.Location
知るために、プロパティを検討する必要があります。DockStyle
編集#1
Windowsフォームには、Dock
から継承するプロパティがありますControl
。
次のことを考えてみましょう:
たとえば、フォームが画面の右側、またはMDIコンテナの右側に近づくたびに、右にドッキングしますか?(ここでちょっと言葉遊び... = P)それで、あなたはControl.LocationChanged
イベントを購読しなければなりません。
private void myForm_LocationChanged(object sender, EventArgs e) {
if (this.Location.X > 900) then
this.Dock = DockStyle.Right;
else if (this.Location.X < 150) then
this.Dock = DockStyle.Left;
else if (this.Location.Y > 600) then
this.Dock = DockStyle.Bottom;
else if (this.Location.Y < 150) then
this.Dock = DockStyle.Top;
else
this.Dock = DockStyle.None;
}
実際、定数値の代わりに、現在のデスクトップ解像度を使用して、ドッキングを実行する場所から比率を計算する必要があります。
***免責事項:****このコードは現状のまま提供されており、テストされていません。このアルゴリズムは、必要に応じてドッキングプロセスをガイドするのに十分であると期待されます。リクエストに応じて、さらに支援が提供される場合があります。* =)
このForm.DesktopLocation
プロパティは、メインウィンドウ、たとえばMDIコンテナなどのジョブに適したツールのようです。他のウィンドウについては、提供されているコードサンプルのようなものを使用します。
これは役に立ちますか?
編集#2
フォームの重複を防ぎたい場合は、メソッドControl.BringToFront()
の呼び出しの前または後に、Control.Show()
最適な方法に応じて、メソッドがそれを実行できる可能性があります。
それで、いくつかの調整の後、私はついにこのコードを機能させることができました。
this.DesktopLocation = new Point((Screen.PrimaryScreen.Bounds.Width / 2 - 420), 0);
I placed that line below the InitializeComponent() and it docks my form to the center of the screen with whatever resolution values.
By setting the FormBorderStyle
of your form to None
, you take the drag handle away from the user so they cannot move it via the mouse.
Then you just need to place it where you want.
If you really want to take away the users options you can also set the ShowInTaskbar
property to false