SuspendLayoutとBeginUpdateの違い
SuspendLayout と BeginUpdate は共にコントロールの描画およびレイアウト更新を一時的に停止するために使用されますが、その使用場面と効果は異なります。
- 閉じる
- SuspendLayoutにより、コントロールのレイアウト更新は停止します。
- コントロールは、SuspendLayoutメソッドの呼び出し時に、子コントロールのレイアウトの計算と描画処理の停止を行う。
- コントロールに大規模なレイアウト変更や再描画を行う前には通常、パフォーマンスを向上させるために SuspendLayout メソッドを呼び出します。
- SuspendLayout でレイアウト更新を中止したら、最後にResumeLayout して更新を再開する必要がある
- 折りたたみを展開
- ResumeLayoutでコントロールのレイアウト更新を再開する。
- ResumeLayoutメソッドを呼び出すと、コントロールはレイアウトの再計算と再描画を行います。
- ResumeLayoutメソッドはSuspendLayoutと対にして呼び出して、レイアウトの更新中にコントロールが整合性を保ち、安定できるようにしてください。
- BeginUpdate
- BeginUpdateでコントロールの描画を中止します。
- コントロールへの大規模なデータ更新時にパフォーマンスを高め、ちらつきを抑えるために通常使用される
- BeginUpdateメソッドを呼び出した後、コントロールは自分自身に対する描画を停止し、EndUpdateメソッド呼び出しによって描画が再開されます。
まとめ:
- SuspendLayout と BeginUpdate はいずれもコントロールの更新処理を一時停止するのに使用されるが、SuspendLayout は主にレイアウトの更新時に、BeginUpdate は主に描画の更新時に使用される。
- SuspendLayoutはResumeLayoutとペアで呼び、BeginUpdateはEndUpdateとペアで呼んでください。
- レイアウトと描画の両方を一時停止する必要がある場合は、 сначала нужно вызвать BeginUpdate を呼び出す前に BeginUpdate を呼び出します。