2012-02-08 8 views
0

私は1つのメインフォームを持っており、いくつかのボタンを押すことでそのコンテンツを動的に変更したいと思います。 「新しいユーザー」と「ログイン」というボタンがあり、新しいユーザーを押しても新しいフォームを表示したくない場合は、新しいユーザーのすべてのラベルとボタンをメインフォーム。そして、もし私がloginを押すと、メインフォームの内容はいくつかのラベルやテキストボックスに変更されますか? これは例です。 私は今、新しいフォームを作成し、.Show()コマンドでユーザーに表示しています。フォームコンテンツを変更するにはどうすればよいですか?

+0

どのVBバージョン(VB6、VB.NET)とタグに対応しているかを明確にしてください。「基本」タグを付けることで多くの良い答えが得られません。 – Filburt

答えて

2

お客様、製品、およびベンダーの「ウィンドウ」があるとします。それらとは別のウィンドウを作成したくないので、グループボックス内のすべてのコントロールをグループ化し、ユーザーの操作に応じて表示/非表示にします。これはうまくいくが、コードの可読性やメンテナンス性の問題に繋がる。ウィンドウ内にたくさんのコントロールを作成するコードがたくさんある。

usrCustomerまたはmyCustomerなどの名前のユーザーコントロールを作成し、そのユーザーに関連するすべてのコントロール(グループボックス、ラベル、コンボなど)を貼り付けます。次に、このメガコントロールを設計時にメインフォームに追加するか、必要なときに実行時に新しいインスタンスを作成するかを決定できます。将来的に何かを修正しなければならない場合は、モンスターのメインフォームクラスを掘り起こす代わりに別のクラス(ctlCostumer)に行きます。

CAVEAT:あなたはなど、(製品メガコントロールは、カスタマー・メガコントロールから何かを知る必要がある場合)これらのコントロールは、それらの間で情報を共有している場合に注意する必要があり、パブリックプロパティでその情報を公開します

+0

多くのおかげで、私の友人。 – Devfly

0

デザインの観点からは、新しいフォームを作成する方がずっと優れています。 また、いくつかの新しいコントロールを作成し、コントロールを非表示にすることもできます。 (またはvisibileプロパティをtrue/falseにします)

ラベルには実行時を変更できるテキストプロパティがあります。

+0

それは私の質問に答えません。私はボタンのテキストボックスとラベルをたくさん持っています。私はそれらを表示/非表示にすると大きな混乱になります。方法がある、私は確信している、多くのプログラムがこれを持っています。 – Devfly

+0

異なる親パネルを作成します。パネル上に異なるコントロールを置く。パネルを表示/非表示にしますか? –

+0

保守性/読みやすさから。コントロールを論理的なセットに分けてください。各セットはあなたのプログラムのさまざまな状態を示すことができます.. –

0

新しいフォームを表示したくない場合は、コンテナ内のユーザー(たとえば、simple Panel)に関連するすべてのコントロール(ラベル、テキストボックスなど)を囲み、パネルはフォームの状態に応じて異なります。

+0

ええ、私はそれを考えました。しようとします! – Devfly

関連する問題