既定のMDI親コントロールには、複数の子フォームを表示できる大きな「デスクトップ」領域があります。ユーザーはフォームをこのデスクトップ領域の端にドラッグすると、ほとんどの子フォームが画面外に表示されます。 (スクロールバーは、MDIの親に表示されます)私はこの機能が嫌いです。子フォームが完全に見えるように、デスクトップ領域の端を固定する方法はありますか?Winforms MDI "Desktop" Area Boundry
4
A
答えて
3
- MDIウィンドウのスクロールバー
- は、すべての子ウィンドウのOnMoveイベントをフック無効にします。ウィンドウが境界の外に移動された場合、ウィンドウが親の中に戻るまでxとyに沿って「ポップ」します。
3
あなたの言うことは、MDIクライアントの「デスクトップ」領域がクライアント領域であることです。
子フォームのresize/moveイベントハンドラを処理し、MDIクライアント領域の境界を超えたときに子の移動をサイズ変更/制限することができます。
5
私は上記の選択された答えを実装するために使用されるコードに:
Public alreadyMoved As Boolean = False
Public Const HEIGHT_OF_MENU_STATUS_BARS As Integer = 50
Public Const WIDTH_OF_MENU_STATUS_BARS As Integer = 141
Private Sub Form_Move(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Move
If Not alreadyMoved Then
alreadyMoved = True
'If I'm over the right boundry, drop back to right against that edge
If Me.Location.X + Me.Width > _
MdiParent.ClientRectangle.Width - WIDTH_OF_MENU_STATUS_BARS Then
MyBase.Location = New System.Drawing.Point(_
(MdiParent.ClientRectangle.Width - Me.Width - _
WIDTH_OF_MENU_STATUS_BARS), MyBase.Location.Y)
End If
'If I'm over the bottom boundry, drop back to right against that edge
If Me.Location.Y + Me.Height > _
MdiParent.ClientRectangle.Height - HEIGHT_OF_MENU_STATUS_BARS Then
MyBase.Location = New System.Drawing.Point(_
MyBase.Location.X, (MdiParent.ClientRectangle.Height - _
Me.Height - HEIGHT_OF_MENU_STATUS_BARS))
End If
'If I'm over the top boundry, drop back to the edge
If Me.Location.Y < 0 Then
MyBase.Location = New System.Drawing.Point(MyBase.Location.X, 0)
End If
'If I'm over the left boundry, drop back to the edge
If Me.Location.X < 0 Then
MyBase.Location = New System.Drawing.Point(0, MyBase.Location.Y)
End If
End If
alreadyMoved = False
End Sub
関連する問題
- 1. Winforms MVP show mdi子フォーム
- 2. MDI AreaサブウィンドウのobjectNameを取得する方法は?
- 3. Silverlight Charting - Stacked Area vs Area Chart
- 4. WinFormsのMDIフォームの保存状態をnet。
- 5. MDI子フォームがWinFormsの親フォームに適合しない
- 6. 従来のWinForms MDIアプリケーションの新しいUIの設計
- 7. 表示winformsのようなOutlookのインターフェイスを持つMDIアプリケーションC#
- 8. WinFormsのMDI親フォームのメニュー項目をループします
- 9. mac desktop vs Desktop
- 10. ハイライト<area>
- 11. GWT - area selection/imagemap
- 12. MVC Routing with area
- 13. フラッドフィルアルゴリズム - Room Area
- 14. <area>
- 15. Pygame blit areaパラメータ?
- 16. C#WinFormsフォームを無効にすると、MDIフォームが背面にジャンプします
- 17. WinformsアプリケーションでMouseWheelを使用してMDI親ウィンドウをスクロールする方法
- 18. Delphi MDIアプリケーションとMDI Childrenのタイトルバー
- 19. キャリバーンマイクロシンプルMDI
- 20. なぜdouble area = 0;
- 21. SIGSEGV、mmapping areaの後
- 22. pandas groupby sum areaプロット
- 23. display div inside text area
- 24. Java Picture Color Area Distinctishing
- 25. MDI内のElementHostのWPFコントロールを介してタブ移動すると、他のMDI子にフォーカスが移動する
- 26. Managed DirectX9 MDI
- 27. TeststackホワイトMDIウィンドウ
- 28. WPFのMDIアプリケーション
- 29. MDIアプリケーションのBackgroundWorker
- 30. MDI子フォームC#
は、以下の私のコードはこれを実行するコードが含まれています参照してください。 – Jeff