1

5 つのタブを持つ TabControl があり、タブの 1 つのコンテンツはいくつかの条件またはモードによって異なります。1 つのコントロール セットを表示する必要がある場合もあれば、まったく異なるコントロール セットを表示する必要がある場合もあります。

これを達成する最も簡単な方法は何ですか?2 つの異なるタブを設定して、tab.Enabled / Visible のようなものを使用しようとしましたが、タブにそのような属性が見つかりませんでした。

操作モードを切り替える機能が欲しいです。1 つのタブを表示し、別のタブを表示し、また元に戻します。どのタブがアクティブかを変更したくないので、1つのタブを完全に非表示にしてから、それを表示して別のタブを非表示にしたいです。

4

4 に答える 4

2

これが簡単な修正(ハック)です

http://www.dotnetspider.com/resources/18344-Hiding-Showing-Tabpages-Tabcontrol.aspx

于 2009-03-08T12:15:30.577 に答える
2

リンクされたソリューションは、やりたいことに対して不必要に複雑です。これは、あなたが望むことをするスニペットです。3 つ以上のタブを持つフォームに基づいています。ある時点で、タブ 2 またはタブ 3 のいずれかを表示したいが、両方を表示したくないとします。フォームに複数のタブがある場合、それらはタブ 2 または 3 の後に表示されるため、代替タブは常に同じインデックス位置に表示されます。また、タブ 1 に、表示するタブを切り替える「tab2button」と「tab3button」という名前のラジオ ボタンのペアがあるとします。ラジオ ボタンの checkchanged イベントには、次のものが含まれます (c++):

             if (this->tab2button->Checked)
             {
                 if(tabControl1->TabPages->Contains(tabPage3))
                 {
                     tabControl1->TabPages->Remove(tabPage3);
                 }
                 if(!tabControl1->TabPages->Contains(tabPage2))
                 {
                     tabControl1->TabPages->Insert(1,tabPage2);
                 }

             }
             else if (this->tab3button->Checked)
             {
                 if(tabControl1->TabPages->Contains(tabPage2))
                 {
                     tabControl1->TabPages->Remove(tabPage2);
                 }
                 if(!tabControl1->TabPages->Contains(tabPage3))
                 {
                     tabControl1->TabPages->Insert(1,tabPage3);
                 }
             }
于 2011-04-07T19:27:00.337 に答える
1

私はエレガントな解決策を知りません。小さなアプリケーションの場合、上記のように TabPages.Add/Insert/Remove を使用するのが最も簡単なようです。

この大規模なアプリケーションでは、TabControl と TabPage クラスをオーバーライドし (それらを MyTabControl と MyTabPage と呼びます)、独自の Visible プロパティを追加しました。tabPage.Visible = false を設定すると、タブ ページが tabControl.TabPages コレクションから削除されます。ページを再度表示すると、元のインデックスでタブ コントロールのコレクションに挿入されます。Visible プロパティにより、コードの残りの部分が少し管理しやすくなりました。

ただし、サブクラスにより、MyTabControl サブクラスの設計が少し難しくなりました。TabControl.TabPages は TabPageCollection です。Visual Studio デザイナーは、TabPages を作成してそれに追加したいと考えています。MyTabPage サブクラスを保持するために必要だったので、MyTabPageCollection も作成しました。

また、ユーザーの選択に応じて、タブ上のさまざまなコントロール グループが表示される場所も多数あります。コントロールをさまざまなパネルにグループ化し、適切な設定に対応するパネルを表示します。

于 2009-03-11T14:35:30.340 に答える
1

こんなに簡単なことの適切な解決策を見たことがないなんて信じられません。過去にタブを表示したり隠したりしたことは知っています。

tabControl.SelectTab(インデックス);

ビンゴ!削除も挿入もシャッフルもありません。

-ホルト

于 2010-02-08T22:39:45.960 に答える