MESCIUS PlusPak for Windows Forms 12.0J
リサイズの設定

GcResizePanel コントロールのリサイズの設定方法について、以下に解説します。

リサイズの許可設定
AllowResizeプロパティは、コントロールのリサイズに合わせて、子コントロールの位置とサイズを調整するかどうかを設定します。

次のコードでは、コントロールのリサイズに合わせて子コントロールの位置とサイズを調整します。
GcResizePanel1.AllowResize = True
gcResizePanel1.AllowResize = true;
  • 子コントロールがリサイズのポリシーを持つ(TextBox の Multiline=True、Label の AutoSize=True、子コントロールの Dock=Fill など)場合、GcResizePanel コントロールの設定よりも優先されます。

リサイズ対象の設定
ResizeMode プロパティを使用すると、リサイズ時に調整する対象を指定することができます。
プロパティ 説明
None リサイズの調整を行いません。
Layout レイアウトのみをリサイズします。
LayoutAndFont レイアウトとフォントをリサイズします。

次のコードでは、フォームのリサイズに合わせてコントロールのレイアウトのみをリサイズします。
GcResizePanel1.ResizeMode = GrapeCity.Win.Components.ResizeMode.Layout
gcResizePanel1.ResizeMode = GrapeCity.Win.Components.ResizeMode.Layout;
子コントロールでのリサイズ設定
GcResizePanel コントロール上に子コントロールを追加すると、GcResizePanel コントロールの AllowResize プロパティと ResizeMode プロパティが子コントロールごとに使用できるようになります。



このプロパティを使用することで、子コントロールごとにリサイズ調整を行うかどうかを設定することができます。
  • GcContainer コントロールや Panel コントロールのようなコンテナの AllowResize プロパティに False が設定されている場合、コンテナとコンテナ内のコントロールはリサイズ調整が行われません。
最小縮小率の設定
MinimumFactor プロパティを使用すると、フォームのサイズを縮小したときに子コントロールを縮小する比率を設定できます。 MinimumFactor プロパティの既定値には 100% が設定されていますが、この場合にはフォームを元のサイズより小さくしても、子コントロールは縮小されません。MinimumFactor プロパティに 80% を設定した場合には Height および Width プロパティが元のサイズの 80% まで縮小されます。

最小縮小率の設定

最小縮小率の設定


次のコードでは、コントロールの既定のサイズに対して 80% まで縮小を行います。
GcResizePanel1.MinimumFactor = 0.8
gcResizePanel1.MinimumFactor = 0.8;

MinimumFactor プロパティに設定できる値は 10〜100 の範囲になります。
  • MinimumFactor プロパティに 10% 以下の値が設定された場合には 10% が設定されます。
  • MinimumFactor プロパティに 100% 以上の値が設定された場合には 100% が設定されます。
リサイズ後のコントロール追加
リサイズされたGcResizePanelコントロールに対し、System.Windows.Forms.ControlCollectionのAddメソッドを使用して動的にコントロールを追加する場合は追加処理の前後でBeginAddControlsおよびEndAddControlsメソッドをコールする必要があります。
BeginAddControlsおよびEndAddControlsメソッドを利用せず、 Addメソッドのみを使用して動的にコントロールの追加を行うと、適切な拡縮率がコントロールに適用されません。
以下のサンプルコードでは、動的に追加したボタンコントロールに適切な拡縮率が適用されます。
'コントロール追加前にBeginAddControlsメソッドをコールします。
GcResizePanel1.BeginAddControls()
'ボタンコントロールを生成します。
Dim newButton As New Button()
newButton.Location = New Point(0, 0)
newButton.Size = New Size(100, 30)
newButton.Text = "Added Button"
'GcResizePanelにボタンコントロールを追加します。
GcResizePanel1.Controls.Add(newButton)
'コントロール追加後にEndAddControlsメソッドをコールします。
GcResizePanel1.EndAddControls()
            
//コントロール追加前にBeginAddControlsメソッドをコールします。
gcResizePanel1.BeginAddControls();
//ボタンコントロールを生成します。
Button newButton = new Button();
newButton.Location = new Point(0, 0);
newButton.Size = new Size(100, 30);
newButton.Text = "Added Button";
//GcResizePanelにボタンコントロールを追加します。
gcResizePanel1.Controls.Add(newButton);
//コントロール追加後にEndAddControlsメソッドをコールします。
gcResizePanel1.EndAddControls();
            
下記のような初期サイズのフォームとボタンコントロールを例に、BeginAddControlsおよび EndAddControlsメソッドを使用して動的にコントロールを追加した際の動作について解説します。


フォームのリサイズ後、BeginAddControlsおよび EndAddControlsメソッドを使用して動的にコントロールを追加すると以下のような結果となります。


このとき、BeginAddControlsおよび EndAddControlsメソッドを使用しないと、適切な拡縮率が適用されずコントロールの一部(フォントサイズなど)に意図しない拡大や縮小が発生します。


関連トピック

 

 


© MESCIUS inc. All rights reserved.