Добавление выбранного переключателя, который находится в групповом поле в списке

У меня есть групповое поле с различными переключателями, и моя цель - добавить выбранный элемент из группового поля в список.

Это, вероятно, не самый эффективный способ, но как я это настроил прямо сейчас, так это то, что я создал список писем, так что при включении определенного радиокнопки элемент добавляется в буквы списка. Затем, используя этот список, я хочу добавлять его в список при каждом нажатии кнопки.

Вот что я начал заполнять буквами Списка:

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());
    }

Примечание: на данный момент третий метод полностью не работает. Я уверен, что есть более эффективный способ сделать это, но я не могу этого понять. Я также пытаюсь объединить этот список оценок с другим списком, чтобы его элементы можно было вводить в список в более удобном формате.


person Pinkfit    schedule 26.09.2018    source источник
comment
В чем проблема?   -  person Aleksa Ristic    schedule 26.09.2018
comment
Я думаю, что мой синтаксис в gbGrade_Enter неверен. Кроме того, выбранная радиокнопка не очищается после проверки каждого элемента.   -  person Pinkfit    schedule 26.09.2018
comment
Кроме того, я уверен, что есть лучший способ добавить выбор переключателя в список без необходимости создавать несколько методов, как я показал?   -  person Pinkfit    schedule 26.09.2018
comment
Зачем нужен список строк? каждый раз можно выбрать только один radbutton, поэтому вы будете добавлять одну букву в список каждый раз, когда нажимаете btnEnter.   -  person γηράσκω δ' αεί πο    schedule 27.09.2018


Ответы (2)


Когда я добавляю список оценок, он возвращает символ, указывающий на расположение элемента, а не на фактическое значение, которое я пытаюсь вернуть.

person Pinkfit    schedule 26.09.2018

Я не знаю, зачем вам нужен список для переключателей, но если вам нужно, я думаю, вы можете использовать это вместо этого. Конечно, если ваш 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 ()

person trksyln    schedule 27.09.2018