17

テーブル レイアウト パネルには、1 列と 3 行があります。(各セルの [塗りつぶし] パネルに 1 つドッキングされています。)

行を非表示/表示できるようにしたいと思います。(いくつかのラジオ ボタンのユーザー選択に基づいて) いつでも 1 つの行のみを表示し、TableLayoutPanel のすべての領域を埋めるようにサイズを変更したいと考えています。

どうやってやるの?何かご意見は?

4

8 に答える 8

20

TableLayoutPanelの行のサイズが自動化されている場合、コンテンツパネルを非表示にすると、パネルが配置されているセルも非表示になります。

于 2010-07-20T13:52:09.733 に答える
19

他の行の高さを 0 に設定するのが最も簡単な方法です。

行 1:

this.tableLayoutPanel1.RowStyles[1].Height = 0;
于 2012-04-25T16:06:41.957 に答える
6

では、なぜ a を使用したのTableLayoutPanelですか?

Panelフォームに3 つの を配置し、各行の内容を全員に入力し、 Dock3 つのパネルすべてのプロパティを に設定するだけFillです。2 つのパネルVisible = falseと 1 つを に設定しtrueます。

別のパネルを表示したい場合は、(ラジオ ボタンの設定に基づいて) それを表示し、他の 2 つを非表示にします。

于 2010-07-20T13:48:34.887 に答える
4

行を非表示にするには、これを試してください!!

tableLayoutPanel1.RowStyles[1].SizeType = SizeType.Absolute;
tableLayoutPanel1.RowStyles[1].Height = 0;
于 2018-01-11T09:49:54.150 に答える
3

同様の作業がありましたが、私の解決策は次のとおりです。

フォーム (または任意のコンテナー) に TableLayoutPanel を追加します。

TableLayoutPanel の列と行の数を 1 に、サイズを 100% に設定します。

Dock を Fill に設定します。

GrowStyle を fixedSize に設定します。

AutoSize を true に設定します。

次に、3 つのフォーム/コントロールすべてをプログラムで追加します。ラジオ ボタンの選択に応じて、そのうちの 1 つを表示する必要があります。それらの 1 つだけが表示されていることを確認してください。これは、最初の FirstControl.Show(); で行うことができます。次に、各 RadioButton イベントで、現在のイベントを非表示にして別のイベントを表示します。ローカル変数で「覚える」ことができます(たとえば、「currentlyVisibleControl」は現在表示されている参照です)

注: 一度に複数の .Show() を実行する場合。次に、TableLayoutPanel は、それがいっぱいで、それ以上項目を追加できないという例外を発生させます。

PS私の例では、MDIウィンドウにTableLayoutPanelがあり、ボタンのクリックで互いに置換される3つのフォームがあるため、ソースコードをコピーすると「口頭」の例が複雑になると思います。

PPS私の経験から、Visual Studioはデザインモードで奇妙なことをすることがあります。プロパティを正しく設定し、デザイナーと実行時の両方で結果を取得するには、TableLayoutPanel を削除して再度追加する必要がありました。そのため、オートサイズまたは絶対値/パーセント値のいずれかがデザイナー画面に表示されない場合は、デザイナーの問題である可能性があります。削除して再試行してください。

于 2012-01-14T13:20:58.153 に答える