C#WPFの禁止は、自動的に画面の端にウィンドウを最大化する方法

オリジナル: C#WPFの禁止は、自動的に画面の端にウィンドウを最大化する方法

追加機能上win7のシステム - 自動的に画面の端にウィンドウを最大化するには、どのようにコードの使用を禁止しますか?

フォームのサイズを変更することが許可されていない場合には、禁止は実際には非常にシンプル最大化

直接のプロパティ設定  this.ResizeMode = ResizeMode.NoResizeと、

しかし、これは直接フォームのサイズを変更しません。

我々両方は、サイズを変更したい最大限自動的に禁止にしたい、私たちは何をすべきでしょうか?

 

画面の端が自動的にドラッグを最大化するので、マウスとドラッグダウン、あなたは、このギャップを利用することができ、プレスがライン上でResizeModeですその後、セットバックした後、マウスを離した後、約設定ResizeModeですうという要件があります

コードは以下の通りであります:

このコードは、タイトルバーの下にマウスホールドのMouseLeftButtonDownイベントが入らないので、新しいフォームへの直接コピーは、有効ではありません、タイトルバーは、制御システムではなく、ウィンドウの一部であり、一般的にやや複雑なプロジェクトはのWindowStyleを設定します上記のコードは、役割を果たすことができるので、どれもが、その後、タイトルバーをカスタマイズしません。

 

アップデート:

上記のコードは、問題を解決するため、実際には問題であるが、副作用を持っています

たとえば:最初の左クリック左ボタンをホールドし、フォームの外にドラッグし、放し内部空間に形成している場合、それはなりますResizeModeですなるNORESIZEを。

また、ResizeModeですが頻繁に変化は良い習慣ではありません。

 

改良:

メインウィンドウmouseDownイベントに追加、次のようにイベントコードは次のとおりです。


  
  
  1. mainWindow.MouseDown += HandleMouseDown;
  2. void MouseDownEvent(Object sender, MouseButtonEventArgs e)
  3. {
  4. if (e.ChangedButton == MouseButton.Left)
  5. {
  6. if (Mouse.LeftButton == MouseButtonState.Pressed)
  7. {
  8. var windowMode = this.ResizeMode;
  9. if ( this.ResizeMode != ResizeMode.NoResize)
  10. {
  11. this.ResizeMode = ResizeMode.NoResize;
  12. }
  13. this.UpdateLayout();
  14. DragMove();
  15. if ( this.ResizeMode != windowMode)
  16. {
  17. this.ResizeMode = windowMode;
  18. }
  19. this.UpdateLayout();
  20. }
  21. }
  22. }

 

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/lonelyxmas/p/12208800.html