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

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

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

Это то, с чего я начал заполнять буквы списка:

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 голосов
/ 27 сентября 2018

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

0 голосов
/ 26 сентября 2018

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

...