如果我选中单选按钮,如何将数据分配给int

时间:2013-10-24 08:19:38

标签: c# radio-button

如果我选中了单选按钮将数据保存到数据库,我想将数据分配给 int volunteerEducation

            int volunteerEducation;
            switch (volunteerEducation)
                case radioButton9.Checked:
                    volunteerEducation= 9;
                    break;
                case radioButton10.Checked:
                    volunteerEducation = 10;
                    break;

3 个答案:

答案 0 :(得分:1)

试试这个......

  foreach(Control c in this.Controls)
    {
     if(c is RadioButton)
     {
      RadioButton rbtn = (RadioButton)c;
      // now here you can use if else statements or Switch Statement
     }
    }

答案 1 :(得分:0)

switch允许您检查单个变量上的多个值之一。 if语句允许任意条件,可以检查单个变量或多个变量。因此,switch不适合您要做的事情。

有一些明显的选择:

  • 使用一系列if ... else if语句
  • 使用一些更高级的构造,例如映射到方法的查找字典(Dictionary<RadioButton,Func<>>可能是一个很好的起点),但如果你不熟悉这样的构造作为开关我强烈建议反对(这是旧的“你必须学会​​在开始跑步前走路”)
  • 迭代单选按钮并在循环中完成你的魔法

这样的循环看起来像:

foreach (Control c in this.Controls)
{
    RadioButton rbtn = c as RadioButton;
    if(rbtn != null)
    {
        // ... your code to work with 'rbtn' goes here ...
        if (rbtn.Checked)
        {
            // ...
        }
    }
}

使用as而不是is后跟显式演员是惯用的,并且还可以为您节省演员阵容; null检查几乎肯定比铸造更快,当然也不会慢。如果无法将给定值强制转换为给定类型,as运算符会为您提供null。如果您正在使用的变量的值可以从另一个线程更改(在这种情况下不太可能,但在其他情况下可能),它还可以为您节省一些难以再现的错误在你脚下改变变量的值。

执行相同操作的一组if语句将与

一致
if (radioButton9.Checked)
{
    // do something
}
else if (radioButton10.Checked)
{
    // do something
}

使用else if模仿switch ... case ... break构造的行为。如果它们是独立的,只需省略else即可。 (然后,为了便于阅读,我建议在if语句块的末尾和下一个if语句之间添加一个空行。)

答案 2 :(得分:0)

我找到了答案,但这与答案没有什么不同。 Point是声明int。例如int volunteerEducation = 0;然后你必须使用if ... else if。

private void updateButton_Click(object sender, EventArgs e)
    {
        try
        {
            string volunteerID = updtIDTextBox.Text;
            string volunteerName = updtNameTextBox.Text;
            string volunteerZone = updtZoneTextBox.Text;
            string volunteerStreet = updtStreetTextBox.Text;
            int volunteerSex = updtMaleRadioButton.Checked ? 0 : 1;
            DateTime volunteerBirthday = updtBirthdayDateTimePicker.Value;

            if (updtHomePhoneTextBox.Text == "")
                updtHomePhoneTextBox.Text = "0";
            int volunteerHomePhone = int.Parse(updtHomePhoneTextBox.Text);

            if (updtWorkPhoneTextBox.Text == "")
                updtWorkPhoneTextBox.Text = "0";
            int volunteerWorkPhone = int.Parse(updtWorkPhoneTextBox.Text);

            if (updtMobile1TextBox.Text == "")
                updtMobile1TextBox.Text = "0";
            int volunteerMobile1 = int.Parse(updtMobile1TextBox.Text);

            if (updtMobile2TextBox.Text == "")
                updtMobile2TextBox.Text = "0";
            int volunteerMobile2 = int.Parse(updtMobile2TextBox.Text);
            string volunteerEmail = updtEmailTextBox.Text;
            string volunteerJob = updtJobTextBox.Text;
            string volunteerAffiliation = updtAffiliationTextBox.Text;
            //The solution start from here
            int volunteerEducation = 0;
            if (radioButton10.Checked)
                volunteerEducation = 1;
            else if (radioButton11.Checked)
                volunteerEducation = 2;
            else if (radioButton12.Checked)
                volunteerEducation = 3;
            else if (radioButton14.Checked)
                volunteerEducation = 5;
            else if (radioButton15.Checked)
                volunteerEducation = 6;
            else if (radioButton16.Checked)
                volunteerEducation = 7;
            else if (radioButton17.Checked)
                volunteerEducation = 8;
            else if (radioButton18.Checked)
                volunteerEducation = 9;
            //end solution
            string volunteerEducationPlace = addEducationPlaceTextBox.Text;
            string volunteerEducationDepartmen = addEducationDepartmentTextBox.Text;
            //same above
            int volunteerInteresting = 0;
            if (updtIntrstMdcnRadioButton.Checked)
                volunteerInteresting = 1;
            else if (updtIntrstSosclRadioButton.Checked)
                volunteerInteresting = 2;
            else if (updtIntrstLrnRadioButton.Checked)
                volunteerInteresting = 3;
            else if (updtIntrstTrnRadioButton.Checked)
                volunteerInteresting = 4;
            //end
            string volunteerNotes = addNotesTextBox.Text;

            int x = dataGridViewX1.SelectedRows[0].Index;
            UpdateVolunteer(volunteerID, volunteerName, volunteerZone, volunteerStreet, volunteerSex, volunteerBirthday, volunteerHomePhone, volunteerWorkPhone, volunteerMobile1, volunteerMobile2, volunteerEmail, volunteerJob, volunteerAffiliation, volunteerEducation, volunteerEducationPlace, volunteerEducationDepartmen, volunteerInteresting, volunteerNotes);
            showVolunteers(x);

            updtIDTextBox.Text = "";
            updtNameTextBox.Text = "";
            updtZoneTextBox.Text = "";
            updtStreetTextBox.Text = "";
            updtBirthdayDateTimePicker.Value = DateTime.Now;
            updtHomePhoneTextBox.Text = "";
            updtWorkPhoneTextBox.Text = "";
            updtMobile1TextBox.Text = "";
            updtMobile2TextBox.Text = "";
            updtEmailTextBox.Text = "";
            updtJobTextBox.Text = "";
            updtAffiliationTextBox.Text = "";
            updtEducationPlaceTextBox.Text = "";
            updtEducationDepartmentTextBox.Text = "";
            updtNotesTextBox.Text = "";


        }
        catch (SqlException sql)
        {
            MessageBoxEx.Show(sql.Message);
        }
    }