フォームのサイズ変更中は一時的にGcResizeのリサイズ処理を停止できますか?

文書番号 : 38477     文書種別 : 使用方法     登録日 : 2015/05/22     最終更新日 : 2015/05/22
文書を印刷する
対象製品
PlusPak for Windows Forms 7.0J
詳細
GcResize コンポーネントは、フォームのサイズが変更されると自動的にリサイズ処理をしてレイアウトを最適化します。このレイアウトのリサイズ描画処理は SuspendLayout と ResumeLayout メソッドの呼び出しなどで中断することができません。GcApplicationResizeコンポーネントについても同様です。

画面のちらつきを抑制する目的などでリサイズ中の描画処理を中断したい場合は、下記のように、GcResize の代わりに GcResizePanel コントロールを使用することで実現できます。この方法では、フォームのサイズを変更している間はレイアウトがリサイズされず、フォームのサイズ変更後にレイアウトがリサイズされます。

1. GcResizeコンポーネントを削除し、GcResizePanelを貼り付けてその中にフォーム上のコントロールをすべて配置する。
  ※ GcResizePanelのフォームへのドッキングは設定しない
2. フォームのサイズが変更された時新しいサイズにあわせてGcResizePanelのサイズを変更するよう次のコードを記述する。

[Visual Basic]

  Private isResizing As Boolean
  Private Sub Form1_ResizeBegin(sender As Object, e As EventArgs) Handles MyBase.ResizeBegin
    isResizing = True
  End Sub

  Private Sub Form1_ResizeEnd(sender As Object, e As EventArgs) Handles MyBase.ResizeEnd
    GcResizePanel1.Size = Me.ClientSize
    isResizing = False
  End Sub

  Private Sub Form1_SizeChanged(sender As Object, e As EventArgs) Handles MyBase.SizeChanged
    If Not isResizing Then
      GcResizePanel1.Size = Me.ClientSize
    End If
  End Sub

[C#]

  Boolean isResizing;

  private void Form1_ResizeBegin(object sender, EventArgs e)
  {      
    isResizing = true;
  }

  private void Form1_ResizeEnd(object sender, EventArgs e)
  {
    gcResizePanel1.ClientSize = this.ClientSize;
    isResizing = false;
  }

  private void Form1_SizeChanged(object sender, EventArgs e)
  {
    if (isResizing == false)
    {
      gcResizePanel1.Size = this.ClientSize;
    }    
  }
関連情報