2011-05-23 124 views
0

我有一個窗體,每個窗體都有一些帶有複選框的文本框(45)和一個按鈕。當按下按鈕時,我想將每個具有CheckBox的TextBox的值傳遞給另一個類中的void,並且未檢查的值通過null值。如果複選框被選中,則傳遞一個值

我目前所面對的是: Form1中

private void button_Click(object sender, EventArgs e) 
{ 
String Value1; 
if (value1CheckBox.Checked) 
{ 
    Value1 = value1TextBox.Text; 
} 
else 
{ 
    Value1 = null; 
} 

String Value2; 
if (value2CheckBox.Checked) 
{ 
    Value2 = value1TextBox.Text; 
} 
else 
{ 
    Value2 = null; 
} 

etc... 

Form2 form2 = new Form2(); 
form2.insertSQL(Value1, Value2, etc...); 
} 

窗體2

private void insertSQL(String Value1, String Value2, String etc...) 
{ 
    /* 
    Code to insert to SQL database 
    */ 
} 

但是,接縫非常低效的,我敢肯定,必須有一個更好的辦法如果選中框,則傳遞值。任何更好的方式建議這樣做將不勝感激,也抱歉,如果我使用了錯誤的術語,我很新的編程。

+0

您可以創建一個包含所有複選框的複選框數組,然後您可以循環該數組或僅將該數組傳遞給另一個表單 – sikas 2011-05-23 03:52:56

回答

1

一個好主意是將所有的複選框和文本框存儲到字典中。您需要創建的特定字典爲:

字典checkToText = new Dictionary();

然後,將每個CheckBox/TextBox對映射到字典中。

最後,在button_Clicked方法,創建一個循環,通過在你的字典中的每個鍵/值對循環:

foreach (KeyValuePair<CheckBox, TextBox> pair in checkToText) 
{ 
//do what you need to do 
//pair.Key for checkbox 
//pair.Value for textbox 
} 
+1

謝謝,我花了一段時間才弄清楚如何執行此操作但是一旦我得到了它,我可以看到它很簡單,並且正是我想要的。 – Hybrid 2011-05-23 05:09:47

0

我想你所得到的限制是未選中的複選框沒有得到如通過表單帖子的一部分。

您可以組裝一個javascript,onclick將組裝一些JSON並將其放入隱藏值中,然後從隱藏值(在您的服務器代碼中)反序列化JSON。這將允許您爲文本框設置空值,而無需在服務器端循環顯示錶單字段。

如我所描述的那樣,可維護性將成爲決定是否將其打到服務器端還是在客戶端執行的決定因素。

另外,不要忘記在創建SQL之前清理數據(如服務器端函數名稱所示)。你不能相信這些數據!

相關問題