单击单选按钮获取主键

时间:2012-03-23 06:05:21

标签: winforms radio-button

我有几个动态填充在表单上的单选按钮,我在动态创建的单选按钮上设置了一个单击事件。点击后,通过调试(例如)“sender {Text =”这是答案一“+ Checked =”True“}使用以下代码获得返回值:

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

        if (radioButtonValue != String.Empty)
        {

        }
    }

调试值通过“RadioButton rb = sender as RadioButton;”返回。 - 不同的单选按钮文本是通过我在本地数据集中调用的数据集设置的,该数据集循环遍历数据集并相应地设置单选按钮文本(例如):

 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)事件是否可以返回我选择的所选单选按钮的主键而不仅仅是发件人{Text =“这是答案一个“+ Checked =”True“}因为我想使用该数据集中的primarykey写回我的数据库。

提前致谢。 亲切的问候 地理

1 个答案:

答案 0 :(得分: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]);
}

这包括radiobutton中的相关数据行。接下来就是从中获取所需的任何数据:

//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());
    */
}

这样你就拥有了所有的数据,并且它是强类型的,这是一件好事。