У меня есть групповое поле с различными переключателями, и моя цель - добавить выбранный элемент из группового поля в список.
Это, вероятно, не самый эффективный способ, но как я это настроил прямо сейчас, так это то, что я создал список писем, так что при выборе определенного радиокнопки элемент добавляется в буквы списка. Затем, используя этот список, я хочу добавлять его в список при каждом нажатии кнопки.
Вот что я начал заполнять буквами Списка:
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());
}
Примечание: на данный момент третий метод полностью не работает. Я уверен, что есть более эффективный способ сделать это, но я не могу этого понять. Я также пытаюсь объединить этот список оценок с другим списком, чтобы его элементы можно было вводить в список в более удобном формате.
Я думаю, что мой синтаксис в gbGrade_Enter неверен. Кроме того, выбранная радиокнопка не очищается после проверки каждого элемента.
Кроме того, я уверен, что есть лучший способ добавить выбор переключателя в список без необходимости создавать несколько методов, как я показал?
Зачем нужен список строк? каждый раз можно выбрать только один radbutton
, поэтому вы будете добавлять одну букву в список каждый раз, когда нажимаете btnEnter
.
Когда я добавляю список оценок, он возвращает символ, указывающий на расположение элемента, а не на фактическое значение, которое я пытаюсь вернуть.
Я не знаю, зачем вам нужен список для переключателей, но если вам нужно, я думаю, вы можете использовать это вместо этого. Конечно, если ваш 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 ()
В чем проблема?