2011-07-05 12 views
0

アイデアは、私はフォームのセットを持っている、ユーザーは "前方"と "戻る"ボタンをクリックし、現在のフォームが別のものに変更されるということです。私の問題は、私は新しいフォームをポップアップするコードを書くことができますが、現在のフォームの "置き換え"を行う方法はわかりません。これは通常どのように行われますか?vb.netを使用して「ウィザード」スタイルを作成するにはどうすればよいですか?

+0

winforms? wpf?生のgdi?ウェブフォーム? mvc? –

+0

ちょうど普通のwinforms。 – telaviv

答えて

3

私が最近したのは、すでにボタンが配置されたフォームと各ステップを含む大きなパネルを作成することでした。このダイアログは、IWizStepインスタンスの形式で初期ステップを受け入れ、そこからロールバックされます。

各ステップは、ロジック自体がクラスによって処理されている間に、ステップの視覚的な側面を担当するUserControlを公開するクラスでした(これはもう少し複雑でしたが、一般的な考えでした)。

IWizStepインターフェイス、ステップによって実装され、ダイアログによって受け入れられたが、の行にあった:一緒にすべてを置くために

Interface IWizStep 
     Event StateChanged As EventHandler 
     ReadOnly Property Control As Control 
     ReadOnly Property Title As String 
     ReadOnly Property CanMovePrevious As Boolean 
     ReadOnly Property CanMoveNext As Boolean 
     Function MovePrevious As IWizStep 
     Function MoveNext As IWizStep 
    End Interface 

、コントローラクラスは、与えられたそれぞれのために必要なステップを構成する方法を知っているだろうアクション。したがって、私は、いくつかの10ステップを必要とする「Emit Order」と、2ステップしか必要としなかった「Emit Orders in Batch」のコントローラーを用意しました。

3

UserControlsのセットを作成し、Panelから単一のフォームに追加して削除します。 (そして、DockFillに設定する)

1

「ウィザード」として機能するユーザーコントロールを定義できます。あなたが持っているボタンとコンテンツパネルの配列が必要です。パネル上のコントロール内で一定の条件が満たされていることを前提に、ボタンを押したときにパネルを切り替えるだけです。独自のウィザードを実行するのはかなり簡単なので、実際の決定的な "ウィザード"メーカーはありません。

現在のフォームの「置き換え」を行う必要はありません。新しいものをプロジェクトに追加するだけで済みます。何らかの理由で必要がある場合は、Me.Controlsでコントロールコレクションを取得して、それをどこかにコピーし、新しいコントロールを上に置きます。ウィザードが不要な場合は、再度スワップしてください。しかし、新しいフォームを作成するのが一般的にベストプラクティスです!

関連する問題