関連付けられたGcResizeコンポーネント
GcApplicationResizeクラスのGetGcResizeメソッドを使用して、特定のフォームに関連付けられた GcResizeコンポーネントをコードにより取得できます。このメソッドは GcApplicationResize オブジェクトのインスタンスの有無に関わらず利用できます。
Imports GrapeCity.Win.Components Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim subForm As New Form2() Dim gcResize As GcResize = GcApplicationResize.GetGcResize(subForm) If gcResize Is Nothing Then MessageBox.Show("Form2にGcResizeコンポーネントはありません。") Else MessageBox.Show("Form2にGcResizeコンポーネントがあります。") gcResize.AboutBox() End If subForm.Show() End Sub
using GrapeCity.Win.Components; private void button1_Click(object sender, EventArgs e) { Form2 subForm = new Form2(); GcResize gcResize = GcApplicationResize.GetGcResize(subForm); if (gcResize == null) { MessageBox.Show("Form2にGcResizeコンポーネントはありません。"); } else { MessageBox.Show("Form2にGcResizeコンポーネントがあります。"); gcResize.AboutBox(); } subForm.Show(); }
フォームごとに割り当てられたGcResizeのイベント
以下の手順では、フォームごとに GcApplicationResize コンポーネントによって割り当てられた GcResize コンポーネントのイベントを使って、リサイズ時に各フォームのタイトルバーにフォームのサイズを表示します。
- Windows Formsプロジェクトを新規に作成します。
- フォーム(Form1)にボタン(Button1)を追加します。
- 新たにフォーム(Form2)を追加します。
- Form2に任意のボタンやテキストボックスコントロールなどを追加します。
- Form1のButton1のClickイベントに次のコードを実装し、ボタンクリックによりForm2が表示されるように設定します。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim f2 As New Form2() f2.Show() End Sub
private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); }
- フォーム(Form1)にGcApplicationZoomコンポーネント(GcApplicationZoom1)を追加します。
- 次のように実装します。
Imports GrapeCity.Win.Components Private Sub GcApplicationResize1_GcResizeAttaching(sender As Object, e As GcResizeAttachingEventArgs) Handles GcApplicationResize1.GcResizeAttaching ' Form2にGcResizeイベントの追加 If TypeOf e.Form Is Form2 Then AddHandler e.GcResize.ControlResizing, AddressOf GcResize_ControlResizing End If End Sub Private Sub GcApplicationResize1_GcResizeDetached(sender As Object, e As GcResizeDetachedEventArgs) Handles GcApplicationResize1.GcResizeDetached If TypeOf e.Form Is Form2 Then RemoveHandler e.GcResize.ControlResizing, AddressOf GcResize_ControlResizing End If End Sub Private Sub GcResize_ControlResizing(sender As Object, e As EventArgs) Dim gcResize As GcResize = DirectCast(sender, GcResize) Dim form As Form = form.ActiveForm form.Text = String.Format("Width:{0}、Height:{1}", form.Width, form.Height) End Sub
using GrapeCity.Win.Components; private void gcApplicationResize1_GcResizeAttaching(object sender, GrapeCity.Win.Components.GcResizeAttachingEventArgs e) { // Form2にGcResizeイベントの追加 if (e.Form is Form2) { e.GcResize.ControlResizing += GcResize_ControlResizing; } } private void gcApplicationResize1_GcResizeDetached(object sender, GrapeCity.Win.Components.GcResizeDetachedEventArgs e) { if (e.Form is Form2) { e.GcResize.ControlResizing -= GcResize_ControlResizing; } } public void GcResize_ControlResizing(object sender, GrapeCity.Win.Components.GcResizeEventArgs e) { GcResize gcresize = sender as GcResize; Form form = Form.ActiveForm; form.Text = string.Format("Width:{0}、Height:{1}", form.Width, form.Height); }
- プロジェクトを実行し、Form1のButton1をクリックし、Form2を表示します。
- Form2のリサイズを行います。
|
リサイズ後のコントロール追加
GcApplicationResizeコンポーネントの影響化にあるフォームに対し、リサイズが発生した後にSystem.Windows.Forms.ControlCollectionのAddメソッドを使用して動的にコントロールを追加する場合は追加処理の前後でBeginAddControlsおよびEndAddControlsメソッドをコールする必要があります。
BeginAddControlsおよびEndAddControlsメソッドを利用せず、 Addメソッドのみを使用して動的にコントロールの追加を行うと、適切な拡縮率がコントロールに適用されません。
以下のサンプルコードでは、動的に追加したボタンコントロールに適切な拡縮率が適用されます。
下記のような初期サイズのフォームとボタンコントロールを例に、BeginAddControlsおよび EndAddControlsメソッドを使用して動的にコントロールを追加した際の動作について解説します。
フォームのリサイズ後、BeginAddControlsおよび EndAddControlsメソッドを使用して動的にコントロールを追加すると以下のような結果となります。
このとき、BeginAddControlsおよび EndAddControlsメソッドを使用しないと、適切な拡縮率が適用されずコントロールの一部(フォントサイズなど)に意図しない拡大や縮小が発生します。
BeginAddControlsおよびEndAddControlsメソッドを利用せず、 Addメソッドのみを使用して動的にコントロールの追加を行うと、適切な拡縮率がコントロールに適用されません。
以下のサンプルコードでは、動的に追加したボタンコントロールに適切な拡縮率が適用されます。
'コントロール追加前にBeginAddControlsメソッドをコールします。 GcApplicationResize1.BeginAddControls(Me) 'ボタンコントロールを生成します。 Dim newButton As New Button() newButton.Location = New Point(0, 0) newButton.Size = New Size(100, 30) newButton.Text = "Added Button" 'フォームへボタンコントロールを追加します。 Me.Controls.Add(newButton) 'コントロール追加後にEndAddControlsメソッドをコールします。 GcApplicationResize1.EndAddControls(Me)
//コントロール追加前にBeginAddControlsメソッドをコールします。 gcApplicationResize1.BeginAddControls(this); //ボタンコントロールを生成します。 Button newButton = new Button(); newButton.Location = new Point(0, 0); newButton.Size = new Size(100, 30); newButton.Text = "Added Button"; //フォームにボタンコントロールを追加します。 this.Controls.Add(newButton); //コントロール追加後にEndAddControlsメソッドをコールします。 gcApplicationResize1.EndAddControls(this);
下記のような初期サイズのフォームとボタンコントロールを例に、BeginAddControlsおよび EndAddControlsメソッドを使用して動的にコントロールを追加した際の動作について解説します。
フォームのリサイズ後、BeginAddControlsおよび EndAddControlsメソッドを使用して動的にコントロールを追加すると以下のような結果となります。
このとき、BeginAddControlsおよび EndAddControlsメソッドを使用しないと、適切な拡縮率が適用されずコントロールの一部(フォントサイズなど)に意図しない拡大や縮小が発生します。