在列表框中的组框中添加所选的单选按钮

时间:2018-09-26 16:39:23

标签: c# winforms listbox radiobuttonlist

我有一个带有各种单选按钮的组合框,我的目标是将组合框中的选定项添加到列表框。

但是,这可能不是最有效的方法,我现在的设置方式是创建一个列表字母,以便在选中特定单选按钮时,将该项添加到列表字母中。然后,使用此列表项,我想在单击按钮时将其添加到列表框中。

这就是我开始填充列表字母的内容:

private List<string> AddAllGrades()
{
    if (radA.Checked)
    {
        //add the checked radiobutton into List<int> letGrade
        allGrades.Add("A");
    }
    else if (radB.Checked)
    {
        //add the checked radiobutton into List<int> letGrade
        allGrades.Add("B");
    }
    else if (radC.Checked)
    {
        //add the checked radiobutton into List<int> letGrade
        allGrades.Add("C");
    }
    else if (radD.Checked)
    {
        //add the checked radiobutton into List<int> letGrade
        allGrades.Add("D");
    }
    else if (radF.Checked)
    {
        allGrades.Add("F");
    }
    return allGrades;
}

只要组框事件发生变化,就添加allGrades的元素:

private void gbGrade_Enter(object sender, EventArgs e)
{
    radA.AutoCheck = true;
    radB.AutoCheck = true;
    radC.AutoCheck = true;
    radD.AutoCheck = true;
    radF.AutoCheck = true;
    lstDetail.Items.AddRange(allGrades.ToArray());
}

将组框的元素添加到列表框:

private void btnEnter_Click(object sender, EventArgs e)
{
    /*if grades and credits are not selected, Error Message:
        * MessageBox.Show("A grade must be selected.");
        * MessageBox.Show("Credit hours must be selected.");
    */
    if (!(radA.Checked || radB.Checked || radC.Checked ||
        radD.Checked || radF.Checked))
    {
        MessageBox.Show("A grade must be selected.");
    }           

    if (cboCreditHrs.SelectedIndex == -1)//if" no credit is selected
    {
        MessageBox.Show("Credit hours must be selected.");
    }
    else
    {
        lstDetail.Items.AddRange(AddAllGrades().ToArray());
    }

注意:目前,第三种方法还不能完全起作用。我敢肯定,还有一种更有效的方法可以做到这一点,但我似乎无法弄清楚。我还尝试将这个成绩列表合并到另一个列表中,以便可以将其元素以更舒适的格式输入到列表框中。

2 个答案:

答案 0 :(得分:0)

当我添加列表等级时,它返回的符号指向项目的位置,而不是我要返回的实际值。

答案 1 :(得分:0)

我不知道为什么您需要单选按钮列表,但是如果我必须的话,可以改用它。当然,如果您的radioaButtons仅包含字母(A,B,C,D)等。

private List<string> AddAllGrades()
    {
    foreach (RadioButton rad in groupBox1.Controls)
                {
                    if (rad.Checked)
                        allGrades.Add(rad.Text);
                }
                return allGrades;
    }

如果没有,您可以将字母放入标签属性,然后将rad.Text更改为rad.Tag.ToString()