1

次の WinForms ユーザー インターフェイスを実装したいと思います。上部に 2 つのボタンがあり、ユーザーは 2 つのビューを切り替えることができます。

したがって、最初のボタン(「ユーザー プロファイルを表示」) をクリックすると、下の 3 つのパネルに 3 つの異なるユーザー プロファイルが表示されます (一部のコンテンツはデータベースから取得されます)。

ここに画像の説明を入力

2 番目のボタン(「チャット履歴を表示」)をクリックすると、下の 3 つのパネルに 3 つの異なるチャット履歴が表示されます (一部のコンテンツはデータベースから取得されます)。

ここに画像の説明を入力

C#/.Net でこの種の構造を実装するための良いアプローチ (動的または静的) は何ですか? 以下の私の粗雑な方法よりもクリーンまたは少なくとも効率的な方法はありますか:

  • 3 つのプロファイル用に 3 セットのコントロールをレイアウトする
  • プロファイルのコントロールの上に重ねて、3 つのチャット履歴の 3 つのコントロール セットをレイアウトします。
  • 押されたボタンに基づいて、コントロールの可視性を変更します。
  • たとえば、1 つ目のボタンがクリックされた場合、チャット履歴に関連するすべてのコントロールに対してVisibility=falseを設定し、ユーザー プロファイルに関連するすべてのコントロールに対してVisibility=trueを設定します。
4

1 に答える 1

3

タブ コントロールは、個別のパネル セットを提供します。それを行うための明白な方法ですが、パネルを重ねて可視性を制御したい場合は、それで問題ありません。コンテンツの MIME タイプに応じて画像またはテキストのいずれかを表示するコンテンツ ビューアーがあり、コンテキストの切り替えはユーザーの操作なしで発生するため、画像コントロールをテキスト ボックスの上に配置し、 MIME タイプは image/jpeg です。ユーザーが選択する場合は、タブ コントロールを使用します。

ビジュアルUIを使用してコントロールを追加していると思います。タブ コントロールをフォームにドラッグするだけで、デフォルトで 2 つのタブが定義された状態で表示されます。tabpages コレクションを変更して、プロパティにさらに追加できます。ここで、選択内容 (プロファイル、チャット) を反映するように名前を変更します。タブ コントロールをフォーム上の必要な場所にドラッグして適切なサイズにするか、ドッキングしてフォームを埋めます。3 つのパネルを最初のタブにドラッグしてから、2 番目のタブをクリックし、そこにさらに 3 つのパネルをドラッグします。それからあなたが持っているように進んでください。ユーザーがチャット タブをクリックすると、タブ コントロールがビューを管理し、最初のタブとその 3 つのパネルを非表示にします。もちろん、最初のタブをクリックすると、その tabPage が再び表示されます。何もコーディングする必要はありません。

3 つのプロファイルと 3 つのチャット履歴を表示する設計が理解できないことを付け加えておきます。ユーザーが 3 人のフレンドに制限される場合を除きます。プロファイル ページでフレンド名のリストボックスを使用し、選択したフレンドに基づいてプロファイル コントロールを埋める単一のプロファイル パネルを使用した方がよいと思います。次に、チャット ページで同じリストを 1 つ使用します。どのフレンドが選択されたかに基づいて履歴をテキスト ボックスにロードするチャット パネル。そうすれば、あなたが望むすべての友達を持つことができます:)

完全を期すために、もう 1 つの方法を提案します。単一のタブページで両方を提供できるのに、ユーザー プロファイルまたはチャット履歴を表示するためにユーザーがタブを切り替える必要があるのはなぜですか? ユーザーごとに新しいタブをプログラムで作成し、そのタブの左側にプロファイル パネルを、右側にチャット履歴を表示することができます。コンテキストの切り替えが少ない = ユーザー エクスペリエンスが向上します。タブ コントロールを使用すると、フォームに収まらないタブを自動的にスクロールできます(tm)。

于 2013-07-10T15:11:10.587 に答える