作成日: 2018/05/24 最終更新日: 2018/05/24
文書種別
技術情報
詳細
これは製品仕様上の制限事項となります。
SuspendLayoutメソッドとResumeLayoutメソッド(共にSystem.Windows.Forms.Controlより継承)は、コントロールに対する複数の属性を変更したい場合、描画速度の向上や画面のちらつき防止などを目的として利用します。
SuspendLayoutメソッド呼び出しによるコントロールの描画処理を一時的に中断させた後は、必ずResumeLayoutメソッド呼び出しによって描画処理を再開させる必要があります。しかし、例えば描画を再開させる前にメッセージボックスやShowDialogメソッド呼び出しによる別フォームの表示を行った場合、処理のスコープが一時的にこれらに移ってしまいます。このため、他の処理の割り込みによって製品の内部設定処理に不整合が生じ、結果的にArgumentOutOfRangeExceptionにような例外が発生し、コントロールが赤い×印で表示される可能性があります。この現象を回避するためには以下の対応が必要です。
・SuspendLayoutメソッド~ResumeLayoutメソッド呼び出しの間はコントロールに対する設定のみを行う
・メッセージボックスや別フォームの表示など、スコープが移動する処理はこれらの間で行わない
SuspendLayoutメソッドとResumeLayoutメソッド(共にSystem.Windows.Forms.Controlより継承)は、コントロールに対する複数の属性を変更したい場合、描画速度の向上や画面のちらつき防止などを目的として利用します。
FpSpread1.SuspendLayout()
FpSpread1.ActiveSheet.RowCount = 10
FpSpread1.ActiveSheet.ColumnCount = 5
FpSpread1.ActiveSheet.Cells(0,0).BackColor = Color.Red
FpSpread1.ResumeLayout()
FpSpread1.ActiveSheet.RowCount = 10
FpSpread1.ActiveSheet.ColumnCount = 5
FpSpread1.ActiveSheet.Cells(0,0).BackColor = Color.Red
FpSpread1.ResumeLayout()
SuspendLayoutメソッド呼び出しによるコントロールの描画処理を一時的に中断させた後は、必ずResumeLayoutメソッド呼び出しによって描画処理を再開させる必要があります。しかし、例えば描画を再開させる前にメッセージボックスやShowDialogメソッド呼び出しによる別フォームの表示を行った場合、処理のスコープが一時的にこれらに移ってしまいます。このため、他の処理の割り込みによって製品の内部設定処理に不整合が生じ、結果的にArgumentOutOfRangeExceptionにような例外が発生し、コントロールが赤い×印で表示される可能性があります。この現象を回避するためには以下の対応が必要です。
・SuspendLayoutメソッド~ResumeLayoutメソッド呼び出しの間はコントロールに対する設定のみを行う
・メッセージボックスや別フォームの表示など、スコープが移動する処理はこれらの間で行わない
MsgBox("描画を中断します")
FpSpread1.SuspendLayout()
FpSpread1.ActiveSheet.RowCount = 10
FpSpread1.ActiveSheet.ColumnCount = 5
FpSpread1.ActiveSheet.Cells(0,0).BackColor = Color.Red
FpSpread1.ResumeLayout()
MsgBox("描画が再開されました")
FpSpread1.SuspendLayout()
FpSpread1.ActiveSheet.RowCount = 10
FpSpread1.ActiveSheet.ColumnCount = 5
FpSpread1.ActiveSheet.Cells(0,0).BackColor = Color.Red
FpSpread1.ResumeLayout()
MsgBox("描画が再開されました")
旧文書番号
82746