追加機能上win7のシステム - 自動的に画面の端にウィンドウを最大化するには、どのようにコードの使用を禁止しますか?
フォームのサイズを変更することが許可されていない場合には、禁止は実際には非常にシンプル最大化
直接のプロパティ設定 this.ResizeMode = ResizeMode.NoResizeと、
しかし、これは直接フォームのサイズを変更しません。
我々両方は、サイズを変更したい最大限自動的に禁止にしたい、私たちは何をすべきでしょうか?
画面の端が自動的にドラッグを最大化するので、マウスとドラッグダウン、あなたは、このギャップを利用することができ、プレスがライン上でResizeModeですその後、セットバックした後、マウスを離した後、約設定ResizeModeですうという要件があります
コードは以下の通りであります:
このコードは、タイトルバーの下にマウスホールドのMouseLeftButtonDownイベントが入らないので、新しいフォームへの直接コピーは、有効ではありません、タイトルバーは、制御システムではなく、ウィンドウの一部であり、一般的にやや複雑なプロジェクトはのWindowStyleを設定します上記のコードは、役割を果たすことができるので、どれもが、その後、タイトルバーをカスタマイズしません。
アップデート:
上記のコードは、問題を解決するため、実際には問題であるが、副作用を持っています
たとえば:最初の左クリック左ボタンをホールドし、フォームの外にドラッグし、放し内部空間に形成している場合、それはなりますResizeModeですなるNORESIZEを。
また、ResizeModeですが頻繁に変化は良い習慣ではありません。
改良:
メインウィンドウmouseDownイベントに追加、次のようにイベントコードは次のとおりです。
-
mainWindow.MouseDown += HandleMouseDown;
-
-
void MouseDownEvent(Object sender, MouseButtonEventArgs e)
-
{
-
if (e.ChangedButton == MouseButton.Left)
-
{
-
if (Mouse.LeftButton == MouseButtonState.Pressed)
-
{
-
var windowMode =
this.ResizeMode;
-
if (
this.ResizeMode != ResizeMode.NoResize)
-
{
-
this.ResizeMode = ResizeMode.NoResize;
-
}
-
this.UpdateLayout();
-
-
DragMove();
-
if (
this.ResizeMode != windowMode)
-
{
-
this.ResizeMode = windowMode;
-
}
-
this.UpdateLayout();
-
}
-
}
-
}