C#.NetでのWindowsフォームアプリケーションのウィザードの作成は初めてです。だから私はウィザードの作成について何も考えていません。マルチウィザードの作成に関するアイデアを教えてください。
よろしく、ラビ
それを行う方法はたくさんあります。ウィザードの各ステップのフォームを作成することは可能ですが、非常に面倒です。そして醜い、ユーザーがステップを変更するとちらつきがたくさん。各ステップをUserControlが機能するようにするには、フォームのControlsコレクションの内外を切り替えるだけです。または、ステップごとにそれらの1つをVisible = trueにします。 UCの設計は複雑になる傾向がありますが、UIアイテムごとにパブリックプロパティを追加する必要があります。
簡単で、RADの方法は、TabControlを使用する方法です。デザイン時にタブを切り替えて、各タブにコントロールをドロップできるため、デザイナーで非常にうまく機能します。切り替え手順は簡単です。変更するだけです。 SelectedIndexプロパティです。重要なのは、実行時にタブを非表示にすることだけです。Windowsメッセージを処理することで簡単に実行できます。新しいクラスをフォームに追加して、以下に示すコードを貼り付けます。コンパイルします。新しいコントロールをツールボックスの上部をフォームに追加します。
using System;
using System.Windows.Forms;
class WizardPages : TabControl {
protected override void WndProc(ref Message m) {
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
}
class WizardPages : TabControl
{
protected override void WndProc(ref Message m)
{
// Hide tabs by trapping the TCM_ADJUSTRECT message
if (m.Msg == 0x1328 && !DesignMode) m.Result = (IntPtr)1;
else base.WndProc(ref m);
}
protected override void OnKeyDown(KeyEventArgs ke)
{
// Block Ctrl+Tab and Ctrl+Shift+Tab hotkeys
if (ke.Control && ke.KeyCode == Keys.Tab)
return;
base.OnKeyDown(ke);
}
}
自分の好みに合わせて自分で作成する必要があります。ヒントは、「frmWizard」のような名前の基本フォームを作成することです。そうすると、すべてのウィザードウィンドウがそのフォームから継承されます。共通オブジェクトまたはウィザードオブジェクトを基本クラスに配置し、必要に応じて\変更して派生クラスでオーバーライドする必要があります。