36

C# .Net で Windows フォーム アプリケーションのウィザードを作成するのは初めてです。そのため、ウィザードの作成についてはまったくわかりません。複数ウィザードの作成に関するアイデアを教えてください。

よろしく、ラビ

4

3 に答える 3

138

それを行う方法はたくさんあります。ウィザードのステップごとにフォームを作成することは可能ですが、非常に厄介です。そして、ユーザーがステップを変更すると、醜い、たくさんのちらつきが発生します。各ステップを UserControl が機能するようにするには、フォームの Controls コレクションの内外でそれらを切り替えるだけです。または、ステップごとにいずれかを 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);
  }
}
于 2010-02-26T14:40:04.677 に答える
29
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);
    }
}
于 2012-06-28T14:13:52.353 に答える
1

自分の好みに合わせて自分で作成する必要があります。「frmWizard」のような名前の基本フォームを作成すると、すべてのウィザード ウィンドウがそれを継承します。共通オブジェクトまたはウィザード オブジェクトを基本クラスに配置し、必要に応じて派生クラスでそれらを変更またはオーバーライドする必要があります。

于 2010-02-26T09:41:58.737 に答える