13

親コントロールに多くのコントロールを追加する必要があります。

しかし、これらのコントロールを親に追加する前後に と を追加すると、ストップウォッチを使用して目盛りを測定します。 コードと を削除するParentControl.SuspendLayoutと、より高速になります。なぜそれが起こるのですか?ParentControl.ResumeLayoutParentControl.SuspendLayoutParentControl.ResumeLayout

したがってSuspendLayoutResumeLayoutサブ コントロールを追加する時間を短縮することは想定されていませんよね? では、サブ コントロールを使用せずにサブ コントロールを親に直接追加する場合SuspendLayoutResumeLayoutつまり、使用する利点は何ですか?SuspendLayoutResumeLayout

4

2 に答える 2

10

これは通常、コードを削除するとプログラムの実行速度が速くなるという通常の理由によるものです。

Suspend/ResumeLayout() はかなり普遍的に誤解されています。デフォルト以外の AutoSize、Dock、または Anchor プロパティを持つコントロールがある場合にのみ効果があります。コントロールが相互に影響するレイアウト プロパティを持っている場合に、レイアウト事故を防ぎます。

何百ものコントロールを含むフォームがある場合、これらのプロパティを使用する可能性はほとんどありません。このような大規模なウィンドウは、自動レイアウトに適していません。したがって、実際には何もしないメソッドを呼び出しています。レイアウトを反復するのに時間がかかりますが、何のメリットもありません。

于 2012-12-07T01:37:44.590 に答える