2013-04-12 67 views
0

使用表單創建調查樣式應用程序,它包含30個表單。例如,第一頁要求用戶檢查加載哪些調查,並根據他們的檢查打開正確的表單。一切正常工作在一個方向。我設置程序的方式是保存靜態布爾變量的第一頁,控制類(Main方法)檢查​​變量是true還是false,然後打開相應的表單。喜歡這個;跳轉C#中隨機順序的表格之間的跳轉

if (Survey.r == true || Survey.s == true || SurveySelection.M == true) 
      { 
       Form6 newform6 = new Form6(); 
       Form6.Hide(); 
       Form6.ShowDialog(); 

       Form7 newform7 = new Form6(); 
       Form7.Hide(); 
       Form7.ShowDialog();   

      } 
if (Survey.t == true) 
      { 
       Form12 newform12 = new Form12(); 
       newform12.Hide(); 
       newform12.ShowDialog(); 

      } 

等等共有30種形式。每個表單上的下一個按鈕只包含this.Hide(),在它們上面。

問題是如果我要在此調查中添加後退按鈕,我不確定如何處理它,因爲調查不是線性更合乎邏輯,因爲它取決於用戶選擇的調查類型。

它可以加載形式4,19,24,26在一個實例和3,6,9在其他。我需要幫助或指導實現此邏輯的後退按鈕。任何幫助,將不勝感激。

回答

1

三十個表格不是很多。您可以創建一個List並維護一個指向當前位置的指針。

private InitializeKnowSequence() 
{ 
    _formIndex = 0; 
    _formsList.Add(new Form2()); 
    _formsList.Add(new Form2()); 
    _formsList.Add(new Form3()); 
    _formsList.Add(new Form4()); 
} 

private void NavigatePrior() 
{ 
    if (_formIndex > 0) 
    { 
     _formsList[_formIndex--].Hide(); 
     _formsList[_formIndex].Show(); 
    } 
} 

private void NavigateNext() 
{ 
    if(_formIndex<_formsList.Count()-1) 
    {     
     _formsList[_formIndex++].Hide(); 
     _formsList[_formIndex].Show(); 
    }   
} 

然後添加一個PushForm(表格形式)方法邏輯分支向前

private void PushForm(Form form) 
{ 
    _formsList.Add(form); 
    NavigateNext(); 
} 
+0

感謝您的幫助。我能夠向前/向後導航而沒有任何問題。 – andressebas