我有一个带有各种单选按钮的组合框,我的目标是将组合框中的选定项添加到列表框。
但是,这可能不是最有效的方法,我现在的设置方式是创建一个列表字母,以便在选中特定单选按钮时,将该项添加到列表字母中。然后,使用此列表项,我想在单击按钮时将其添加到列表框中。
这就是我开始填充列表字母的内容:
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());
}
注意:目前,第三种方法还不能完全起作用。我敢肯定,还有一种更有效的方法可以做到这一点,但我似乎无法弄清楚。我还尝试将这个成绩列表合并到另一个列表中,以便可以将其元素以更舒适的格式输入到列表框中。
答案 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()