2016-08-08 6 views
0

사용자가 표시된 여러 페이지가있는 마법사를 구성하고 있습니다. 이전 페이지에서 사용자 선택 항목의 데이터에 액세스하려면 한 페이지가 필요합니다. 내 생각은 두 페이지의 생성자에 참조로 매개 변수를 전달한 다음 해당 매개 변수에 속성을 할당했지만 변경 사항은 페이지간에 유지되지 않습니다. 나는 내가 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#에 익숙하지 않아 아마도 이것은 어리석은 일이다. 그러나 나는 구글에서 찾거나 SO를 둘러 볼 수 없다.

+0

당신은 세션 변수에 정보를 저장할 수 있습니다. –

+0

'page'라는 단어는 'winforms'라는 태그가 붙어 있기 때문에 약간 오해의 소지가 있습니다. –

+0

@ScottHannen 어떻게 단어 페이지가 오도 할 것입니까? 이들은 winforms 프로젝트 내의 마법사 페이지입니다. –

답변

0

나는 ExportPathActive라는 속성으로 PersistentData라는 클래스를 만든 다음이를 전달하기로 결정했습니다. 그것은 잘 작동하고 필요한 경우 더 많은 데이터를 보유하도록 확장 할 수 있습니다. 보다 우아한 접근 방식이 게시 될 경우이를 승인하기 위해 기다리게 될 것입니다.

클래스는 :

/// <summary> 
/// A store to pass data between pages. 
/// </summary> 
public class PersistentData 
{ 
    /// <summary> 
    /// Initializes a new instance of the <see cref="PersistentData"/> class. 
    /// </summary> 
    public PersistentData() 
    { 
     this.ExportPathActive = false; 
    } 

    /// <summary> 
    /// Gets or sets a value indicating whether [export path active]. 
    /// </summary> 
    /// <value> 
    /// <c>true</c> if [export path active]; otherwise, <c>false</c>. 
    /// </value> 
    public bool ExportPathActive { get; set; } 
} 
관련 문제