PlusPakのコンテナコントロールを使用していると、コンテナをスクロールするときにLayoutイベントが発生してしまう場合がある

文書番号 : 39383     文書種別 : 不具合     登録日 : 2016/03/31     最終更新日 : 2016/04/28
文書を印刷する
対象製品
PlusPak for Windows Forms 7.0J
状況
修正済み
詳細
この現象は以下のコンテナコントロールを使用する場合に発生します。

[対象コントロール]
・GcTabControl
・GcContainer
・GcFlowLayoutContainer

下記の条件を満たした時、コンテナコントロールをスクロールする度にLayoutイベントが発生してしまいます。そのため、コンテナに大量のコントロールが配置されている場合には描画が遅延することがあります。

・コンテナのAutoScrollプロパティがTrueでスクロールバーが表示されている
・コンテナの直下の子コントロールにGcContainer以外のコントロールが配置されている
回避方法
この問題はService Pack 3(v7.0.2016.0428)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。

Service Pack 3より前のバージョンでは次の方法で回避可能です。

下記のように、コンテナにPanelを追加しすべての子コントロールをその中に移動することで現象を回避することができます。

以下は、gcTabControl1をコンテナとして使い、gcTabPage1に子コントロールが配置されている場合の例です。

[サンプルコード]

Panel panel = new Panel();

Control[] controls = new Control[this.gcTabPage1.Controls.Count];
this.gcTabPage1.Controls.CopyTo(controls, 0);
this.gcTabPage1.Controls.Clear();
this.gcTabPage1.Controls.Add(panel);
panel.Margin = new System.Windows.Forms.Padding(0);
panel.Dock = DockStyle.Fill;
panel.AutoScroll = true;
panel.Controls.AddRange(controls);
キーワード
PPWI11368