フォームのサイズ変更中は一時的にGcResizeのリサイズ処理を停止できますか?
対象製品
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;
}
}
画面のちらつきを抑制する目的などでリサイズ中の描画処理を中断したい場合は、下記のように、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;
}
}