7

私は通常 a を使用し TabControl、どういうわけかタブを非表示にしてナビゲートします。

これを行う他の方法に興味があります!!!

4

2 に答える 2

5

プロパティが に設定されてPanelいる最初のパネルを除くすべてのオブジェクトのコレクションを使用できます。Visiblefalse

現在のパネルのインデックスを保存し、このインデックスを適切に変更する「次へ」および「前へ」ボタンを用意します。このインデックスが変更されたら、必要に応じて適切なパネルを表示/非表示にします (特定の時点で現在のパネルのみを表示する必要があります)。

一部またはすべてのパネルでイベントを処理してIsVisibleChanged、ユーザーが特定のパネルに移動したときに特定の動作をトリガーすることもできます。

于 2010-03-19T21:09:30.487 に答える
2

これはかなり複雑なトピックです。私は約 2 年前に社内で使用するためにかなり包括的なウィザード コントロールを作成しましたが、正確に機能するようになるまでに数週間かかったのを覚えています。

基本的な要素は次のとおりです。

  • ヘッダーパネル
  • コンテンツ パネル
  • アクションパネル
  • サイドバー

コンテンツ パネルとアクション パネルの両方で を使用しParentControlDesignerて、ドロップ コントロールを有効にします。コンテンツ パネルでは、直接ドロップすることはできません。代わりに、アクティブなページ (サブパネル) にドロップできます。アクション パネルには、標準の 4 つのボタン (前、次、キャンセル、終了) を作成する「デフォルト」モードもあります。私は主にカスタム モードを実装して、標準の Winforms ボタンの代わりに DevEx ボタンを使用してスキンを適用できるようにしました。

ヘッダーは基本的に静的でPictureBoxLabel画像、テキスト、およびフォントをカスタマイズできます。(デフォルトでは、テキストはページ タイトルと同じで、フォントはボールド スタイルが追加されたコントロールのフォントです)。

次に、API によって公開される一連のデータ構造があります。

  • ステップ (名前、タイトルなどで、サイドバーにリンクするかどうかも指定します)
  • ワークフロー (つまり、選択に基づいて次に進む場所)
  • 検証イベント (同期と非同期の両方)
  • アクション (ページ変更、ボタンクリックなどの前後に実行)
  • トランジション効果 (私は楽しみのためにこれらを行いました。ユーザーは「それらが好きです」)

ステップ用のカスタム コレクション エディターをまとめました。これにより、上記で説明したように、コンテンツ パネルのサブパネルが作成されます。各パネルはコントロール コレクションに直接追加されますが、アクティブなステップ プロパティに基づいて一度に表示されるのは 1 つだけです。ドッキングがまったく正しく機能していないように見えたので、すべてのサイズ変更メソッドをオーバーライドする必要があったことを覚えています。ページ間を簡単に切り替えるためのスマート タグを作成したことはありませんが、プロパティ グリッドでアクティブなページ (またはページ インデックス) を選択できます。

次に、個々のページにカスタム ロジックを挿入するためのフックを多数含める必要がありました。すべてのコードを投稿せずに、ここで詳細を説明するのは困難です。

適切に設計してテストするにはかなり時間がかかりますが、奇抜な設計トリックを使用したことを覚えていません。前述のように、個々の UI 要素 (実行時と設計時の両方) の観点から問題に系統的にアプローチする必要がありました。データ構造とそれらがどのように相互作用するか。

これはすべて、再利用可能なウィザード コンポーネントを作成するためのものであることを覚えておいてください。これは、特定のアプリ用に約 10 個のウィザード コンポーネントを開発する必要があったためです (他のプロジェクトにも役立ちます)。1 つの簡単なウィザードを一緒にハックする必要がある場合、おそらくこのすべての問題を経験することはなく、タブ コントロールといくつかのフロー パネルを使用して、あなたがしていることを実行するだけです。または、DX ライブラリなど、多くの Winforms ライブラリで現在利用できるように、既製のウィザード コントロールを使用することをお勧めします。

于 2010-03-19T21:19:22.390 に答える