首页 > 解决方案 > 如何在 C# 中使用多个单选按钮?

问题描述

如何使用多个单选按钮并保存到我的数据库访问选择项目文本单选按钮当我尝试仅从名称到性别时,他只保存性别。当我尝试查询插入(lname,mname,fname,course,major,次要,性别)当我尝试将另一个单选按钮插入(lname,mname,fname,course,major,minor,gender,year)时,他将数据保存在我的数据库访问中,但他保存了插入错误当我将文本留在字符串年份时的文本。

我的表格设计:

在此处输入图像描述

public partial class student : UserControl
{
    OleDbConnection con = new OleDbConnection(@"Provider = 
    Microsoft.ACE.OLEDB.12.0; Data Source 
    =C:\Users\ronaldcaymo\Desktop\Student Information System.accdb");
    string Gender;
    string year;
    string Status;

    private void button4_Click(object sender, EventArgs e)
    {
        con.Open();
        OleDbCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "insert into 
        table1(Lname,Fname,Mname,Course,Major,Minor,semester,Gender,Status) 
        values('"+tblname.Text+"','"+tbfname.Text+"','"+tbmname.Text+ 
        "','"+cbcourse.Text+"','" +cbmajor.Text 
  +"','"+cbminor.Text+"','"+cbsemester.Text+"','"+Gender+"','"+Status+"')";
        cmd.ExecuteNonQuery();
        con.Close();
        MessageBox.Show("Student Added");
    }    
    private void radioButton5_CheckedChanged(object sender, EventArgs e)
    {
        Gender = "Male";
    }

    private void radioButton6_CheckedChanged(object sender, EventArgs e)
    {
        Gender ="Female";
    }

    private void radioButton1_CheckedChanged(object sender, EventArgs e)
    {
        year = "1st";
    }

    private void radioButton2_CheckedChanged(object sender, EventArgs e)
    {
        year ="2nd";
    }

    private void radioButton3_CheckedChanged(object sender, EventArgs e)
    {
        year ="3rd";
    }

    private void radioButton4_CheckedChanged(object sender, EventArgs e)
    {
        year ="4th";
    }

    private void radioButton8_CheckedChanged(object sender, EventArgs e)
    {
        Status = "Single";
    }

    private void radioButton7_CheckedChanged(object sender, EventArgs e)
    {
        Status = "Married";
    }  

}

标签: c#databasems-access

解决方案


CheckedChanged每次更改单选按钮的状态时,单选按钮的事件都会触发,这意味着当它被选中或未选中时。

因此,当检查“第一年”并且您检查另一个广播按钮(例如“第三年”)时,“第一年”将不受限制地进行检查,从而radioButton1_CheckedChanged同时触发该活动radioButton3_CheckedChanged

要解决此问题,请在所有radioButton_CheckedChanged事件中添加条件检查,如下所示:

private void radioButton3_CheckedChanged(object sender, EventArgs e)
{
    if(radioButton3.Checked){
        year ="3rd";
    }
}

推荐阅读