2012-03-23 44 views
0

我有幾個單選按鈕在窗體上動態填充,我在動態創建的單選按鈕上設置了單擊事件。在點擊我得到一個返回值調試通過(例如)如下「發件人{文本=‘這是回答一個’+選中=‘真’}使用代碼如下:獲取單選按鈕上的主鍵點擊

//Radio button click: 
    void Form1_Click(object sender, EventArgs e) 
    { 
     RadioButton rb = sender as RadioButton; 
     string radioButtonValue = rb.Text; 

     if (radioButtonValue != String.Empty) 
     { 

     } 
    } 

調試值通過返回「單選按鈕RB =發送者作爲單選按鈕;」 - 有多種不同的單選按鈕文本通過我在一個本地數據集通過所述數據集循環,並與所說的數據集設置相應地設置的單選按鈕的文本(例如):

for (int i = 0; i < _dataSetRadioButtons.Tables["tbl_QuestionnaireAnswer"].Rows.Count; i++) 
            { 
             radioButtons[i] = new RadioButton(); 
             radioButtons[i].AutoCheck = true; 
             radioButtons[i].Text = _dataSetRadioButtons.Tables["tbl_QuestionnaireAnswer"].Rows[i]["tbl_QuestionnaireAnswer_Description"].ToString(); 
             radioButtons[i].Location = new System.Drawing.Point(60, 20 + i * 20); 
             radioButtons[i].Click += new EventHandler(Form1_Click); 
             panel.Controls.Add(radioButtons[i]); 
            } 

所以:wat id想知道是單選按鈕單擊(Form1_Click)事件是否可以返回我選擇的選定單選按鈕的主鍵,而不僅僅是t他發件人{文本=「這是答案一」+檢查=「真」},因爲我想使用該數據集中的主鍵寫回我的數據庫。

在此先感謝。 親切的問候 地理

回答

1

大多數winforms控件包含用於包含控件中的自定義用戶數據的Tag屬性。你可以讀到更多在:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.tag.aspx

所以,你的解決方案應該是簡單,更簡潔這樣的:

for (int i = 0; i < _dataSetRadioButtons.Tables["tbl_QuestionnaireAnswer"].Rows.Count; i++) 
{ 
    radioButtons[i] = new RadioButton(); 
    radioButtons[i].AutoCheck = true; 
    radioButtons[i].Location = new System.Drawing.Point(60, 20 + i * 20); 
    radioButtons[i].Tag = _dataSetRadioButtons.Tables["tbl_QuestionnaireAnswer"].Rows[i]; 
    radioButtons[i].Click += new EventHandler(Form1_Click); 
    panel.Controls.Add(radioButtons[i]); 
} 

這包括單選按鈕相關的數據行。接下來的事情就是從它那裏得到任何數據,您需要:

//Radio button click: 
void Form1_Click(object sender, EventArgs e) 
{ 
    RadioButton radioButton = sender as RadioButton; 
    if (radioButton == null) 
     return; 

    DataRow row = radioButton.Tag as DataRow; 
    if (row == null) 
     return; 

    /* Post any processing here. e.g. 
     MessageBox.Show(row["ID"].ToString()); 
    */ 
} 

這樣,你把所有的數據和它的強類型,這是一件好事。

+0

嗨德米特里謝謝你的代碼,但設置標籤s你爲datasetradiobuttons沒有填充單選按鈕時,他們是動態創建的文本 - 我缺少的東西在這裏 - 道歉> geoNeo :) – 2012-03-23 06:29:09

+0

哎呦等我fionx我知道了Dimitriy - 謝謝你:D – 2012-03-23 06:32:08

+0

不客氣:) – 2012-03-23 06:39:25