Как сохранить объект-флажок в списке? - PullRequest
0 голосов
/ 10 сентября 2018

Я борюсь с CheckBox в C #

 public formPCRBaseline(List<GetBaselineSectionTasks> m_objPCRCheck)
 {
     setDefaults(m_objPCRCheck);
 }

 private void setDefaults(List<GetBaselineSectionTasks> m_objPCRCheck)
 {
     richTextBoxPCRBaseline.BackColor = Color.White;

     foreach (GetBaselineSectionTasks i_objPCRCheck in m_objPCRCheck)
     {
         richTextBoxPCRBaseline.SelectionIndent = 0;
         CheckBox checkBox = new CheckBox();
         checkBox.Height = 20;
         checkBox.Width = 20;
         richTextBoxPCRBaseline.Controls.Add(checkBox);
         checkBox.Tag = i_objPCRCheck;
         richTextBoxPCRBaseline.SelectionIndent = 30;
         richTextBoxPCRBaseline.SelectedText = "Section : '" + i_objPCRCheck.taskname;
         richTextBoxPCRBaseline.SelectedText = "\n\n";
     }
}

Итак, этот код возвращает мне список объектов с некоторым флажком, и я хотел бы установить флажок, когда нажимал кнопку подтверждения, поэтому я подумал сделать что-то вроде:

private void buttonConfirm_Click(object sender, EventArgs e, out List<GetBaselineSectionTasks> m_objCheckeditem)
{
    int i = 0;
    m_objCheckeditem = new List<GetBaselineSectionTasks>();
    foreach (CheckBox i_objCheck in richTextBoxPCRBaseline.Controls)
    {
        if (i_objCheck.Checked)
        {
            m_objCheckeditem.Add(i_objCheck.Tag);
            MessageBox.Show(i_objCheck.Tag.ToString());
        }
        i++;
    }
}    

И я получил эту ошибку

CS1503 Аргумент 1: невозможно преобразовать из «объекта» в «MyApplication.GetBaselineSectionTasks»

И оно пришло из этой строки: m_objCheckeditem.Add(i_objCheck.Tag);

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

Есть идеи, как мне получить проверенный товар и вернуть его?

1 Ответ

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

Поскольку свойство Tag используется для хранения произвольных данных, его тип равен System.Object.

Нельзя добавить объект типа System.Object в общий список GetBaselineSectionTasks. Так что вам просто нужно привести его к соответствующему типу.

m_objCheckeditem.Add(i_objCheck.Tag as MyApplication.GetBaselineSectionTasks);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...