2015-06-02 75 views
1

我正在開發一個程序,我不知道該怎麼解決這個問題。在散列表或數組中保存信息,然後輸出

在我的節目,我有大量的複選框(Yes和No),並選擇否時,一個文本框將顯示提示用戶寫了評論,以下例子:

private void checkBox48_CheckedChanged(object sender, EventArgs e) 
    { 
     if (checkBox48.Checked == true) 
     { 
      // Create an instance of the dialog 
      frmInputBox input = new frmInputBox(); 
      // Show the dialog modally, testing the result. 
      // If the user cancelled, skip past this block. 
      if (input.ShowDialog() == DialogResult.OK) 
      { 
       // The user clicked OK or pressed Return Key 
       // so display their input in this form. 

       problems = problems + "23. Check Outlet Drainage : " + input.txtInput.Text + Environment.NewLine; 
       this.txtProblems5.Text = problems; 
       txtProblems5.Visible = true; 
      } 

      // Check to see if the dialog is still hanging around 
      // and, if so, get rid of it. 
      if (input != null) 
      { 
       input.Dispose(); 
      } 
     } 
    } 

然而,暫時我有用戶輸入只需寫入String,即problems。我想把這些值分別放在不同的地方。

散列表或數組是否合適? (例如txtInput.Text = Problems[40]

+2

一個建議,大多與這個問題無關。我假設你爲每個複選框都有一個CheckedChanged方法...如果你用不同的文本/控件進行相同的操作(如上所示),你應該可以使'CheckedChanged '方法足夠通用,以至於你只需要一個。它會使你的程序更加可維護,並且更具可讀性。 –

+0

你有任何文件可以幫助我做到嗎? – Lussos92

+0

不,但如果您不知道,每個方法中的'object sender'參數將保存事件來自的'Checkbox'對象。這將照顧'checkBox48.Checked'部分。對於其他對象,我懷疑你只需要在每個複選框和相關的文本框和文本字符串之間建立關係。如果你想要更多幫助清理它,我建議在http://codereview.stackexchange.com/上發佈它。如果你這樣做,請在這裏留言,我會提出一些更具體的建議。 –

回答

1

如果您使用數組,它意味着您將不得不按照您的示例爲每個文本框創建條目。

優先我可能會使用dictionary<string,string>其中鍵是控件的名稱。
然後,我textbox值可以是:

txtProblem1.text = dictionary.ContainsKey(txtProblem1.Name) ? dictionary[txtProblem1.Name] : ""; 
+0

是的,這是一個很好的幫助,謝謝 – Lussos92

2

無論是數組或哈希表將工作。散列表可能會對開發人員更友好一些,並可能佔用更小的內存空間。這裏是一個小例子:

private Dictionary<int, string> problems = new Dictionary<int, string>; 

// add key value pair 
problems.Add(42, "your problem here"); 

// get value 
string value = ""; 
if (problems.TryGetValue(42", out value)) 
{ 
    // the key was present and the value is now set 
} 
else 
{ 
    // key wasn't found 
} 
+0

是的,我想我會與哈希表,謝謝你的幫幫我 – Lussos92

相關問題