0

コードごとに親フォームのコントロールを配置するにはどうすればよいですか?

これまでのところ、このコードを使用してユーザーコントロールを呼び出しています。

 Me.ParentForm.Controls.Remove(Me)
 controlMain()

ユーザーが親フォームのサイズを変更したり、フォームを最大化したりするたびに、ユーザーコントロールが自動的に配置されるようにします現在、私はによってコントロールを設定しています、

    Public Sub controlMain()
        Dim usrctl As New _ctlMain
        _Main.Controls.Add(usrctl)
        usrctl.Location = New Point(_Main.Width / 2 - usrctl.Width / 2, _Main.Height / 2 -usrctl.Height / 2)
    End Sub

これはモジュール上にあります。_Mainは私の親フォームであり、_ctlMainは呼び出されるコントロールです。アクティブなコントロールの特定の関数が呼び出された後に呼び出す他のユーザーコントロールがあるため、設計中にユーザーコントロールを親フォームに配置するつもりはありません。

usercontrolのautosizeプロパティを試しましたが、アプリケーションでは機能しないと思います。Usercontrolにはdockプロパティとanchorプロパティがありません。

4

1 に答える 1

1

FlowLayoutPanelTableLayoutPanelなどの自動レイアウト コントロールのいずれかを使用します。

ユーザー コントロールをフォーム自体に追加する代わりに、 を使用してフォームの上に配置された FlowLayoutPanel または TableLayoutPanel コントロールに追加しますDockStyle.Fill

FlowLayoutPanel があなたが望むものであるように私には思えます。これにより、コントロールのレイアウトは完全に自動的に処理され、FlowDirectionプロパティの値に応じて、左から右または上から下のいずれかの順序で配置されます。

TableLayoutPanel を選択する唯一の理由は、コントロールの正確な配置をより正確に制御する必要がある場合です。これは HTML テーブルと同じように機能し、各コントロールが独自の「セル」を取得します。

サイズが自動的に調整されるようにしたい場合は、個々のユーザー コントロールのDockおよび/またはプロパティを設定することもできます。Fillたとえば、TableLayoutPanel に配置されているセル全体を埋めるように各コントロールを設定できます。

于 2012-08-12T07:47:29.767 に答える