私は、ユーザが表示されている複数のページを持つウィザードをまとめています。前のページでユーザーの選択肢からデータにアクセスできるようにするには、1つのページが必要です。私の考えは、両方のページのコンストラクタに参照渡しのパラメータを渡し、そのパラメータにプロパティを割り当てますが、変更はページ間で持続しません。私はそれが私が誤ってrefを使用していることを意味していると仮定しています。 ウィザードホストによって制御されるため、メソッド自体に直接データを渡すことはできません。パラメータに割り当てられたプロパティの参照を保持する
ホストの初期化:refはプロパティとリンクされている
WizardHost host = new WizardHost();
using (host)
{
host.Text = Migration.Properties.Resources.AppName;
host.ShowFirstButton = false;
host.ShowLastButton = false;
host.WizardCompleted += new WizardHost.WizardCompletedEventHandler(this.Host_WizardCompleted);
Reference<DBManip> dbControllerRef = new Reference<DBManip>();
bool exportPathActive = false;
host.WizardPages.Add(1, new Page1());
host.WizardPages.Add(2, new Page2(dbControllerRef));
host.WizardPages.Add(3, new Page3(dbControllerRef, ref exportPathActive));
host.WizardPages.Add(4, new Page4(dbControllerRef, ref exportPathActive));
host.WizardPages.Add(5, new Page5());
host.LoadWizard();
host.ShowDialog();
ページ:
public Page3(Reference<DBManip> dbControllerRef, ref bool exportPathActive)
{
this.InitializeComponent();
this.DBControllerRef = dbControllerRef;
this.Page3Body.Text = Migration.Properties.Resources.Page3Body;
this.ExportPathActiveRef = exportPathActive;
}
public Reference<DBManip> DBControllerRef
{
get;
private set;
}
私は変更は、次のページに保存されたコンストラクタでexportPathActiveを変更する場合は、しかし、であるプロパティ渡されたパラメータに割り当てられても、参照は保持されません。私はC#の新機能ですから、これはおそらく愚かなものですが、Googleで見つけたり、SOの周りを見たりすることはできません。
あなたはセッション変数に情報を格納することができるかもしれません。 –
質問は 'winforms'とタグ付けされているので、' page'という単語はやや誤解を招きます。 –
@ScottHannenワードページはどのように誤解を招きますか?これらは、winformsプロジェクト内のウィザードのページです。 –