1

内部にいくつかの TableLayoutPanels を持つ TableLayoutPanel があります。量は動的に変化し、ほとんどの場合、多すぎてフォーム内に収まりません。コンポーネント全体を表示できるように、スクロール バーが必要です。

メイン パネルの autoscroll プロパティを true に設定してドッキングし、最大サイズを設定しようとしました。代わりに、コントローラーが行うことは、すべてのパネルをフォーム内に収めようとするため、パネルをスクロールするスクロール バーを作成する代わりに、内部コンポーネントのサイズを変更し、それらをすべてまとめて圧縮することです。

私が間違っているかもしれないことを知っていますか?

ありがとう。

ホセ

PS: VS 2010 を使用しています

4

5 に答える 5

2

ある日、同じ問題が発生し、TableLayoutPanel に「MinimumSize」が設定されていることが問題であることがわかりました。これにより、Dock や Anchor の制約に関係なくコントロールが最小の高さを維持し、AutoScroll 機能が正しく機能しなくなりました。その機能は、そのコントロールの高さに対するコントロールのすべての子コントロールの Y 座標の単純なチェックに基づいているため、TableLayoutPanel の子コントロールが親コントロールのために見えなくなっていたにもかかわらず、スクロールバーは表示されませんでした。クリップエリア。

つまり、TableLayoutPanel の MinimumSize プロパティをチェックして、空であることを確認します。

于 2012-07-23T15:57:27.863 に答える
1

私のプロジェクトでも同じことが起こりました。すべてのコントロールが TableLayoutPanel 内で押しつぶされました。私の場合、多くのコントロールを ColumnStyle.Percent としてレンダリングしていました。これを ColumnStyle.Autosize に切り替えることが、必要な修正でした。

これらのプロパティも設定していると思いますが、念のため、TableLayoutPanels も次の設定を使用します。

AutoSize = true;
AutoSizeMode = AutoSizeMode.GrowAndShrink;
AutoScroll = true;
于 2011-07-30T00:31:29.557 に答える
1

遅い回答ですが、最近複雑なレイアウトと戦っていて、フィールドが多すぎる画面でスクロールを機能させるための解決策を探していました。正直なところ、より良い設計であれば、99% の確率でこの問題を回避できるはずですが、手を縛られている場合もあります。

問題

問題は、複数のグリッド、グループ、およびパネルでネストが深すぎると、コンテンツが現在の画面のサイズを超えていることを親コントロールに適切に報告しなくなることです。実際には、コントロールがすべてドック フィルに設定されてて、親コントロール内に収まるように設定されているため、最上位のコントロールは、その偉大な偉大な偉大な偉大な孫のコントロールの内容が認識されていないことを認識していない可能性があります。フィット。

解決

これを修正する秘訣は、一番上のパネルを特定の最小サイズでスクロールするように手動で強制することです。

MainPanel.AutoSize = true;
MainPanel.AutoScrollMinSize = new Size(400, 500);
于 2015-01-22T15:46:09.623 に答える
1

多分これが役立つでしょう。

それでもうまくいかない場合は、パネルを配置してから、そのパネルに tableLayoutPanel を配置してみてください。パネルの autoScroll プロパティを true に設定します。

于 2011-06-15T09:02:30.223 に答える
0

TableLayoutPanelスクロールはバグだらけです。正しく動作させるための解決策はこちらです。

于 2020-03-05T19:43:49.427 に答える