C # Datagridview Установлен флажок Событие - несколько строк?

StackOverflow https://stackoverflow.com/questions/1074378

Вопрос

У меня есть datagridview с несколькими столбцами и строками.Первый столбец содержит флажок.Я хочу, чтобы пользователь мог установить несколько флажков, а затем выполнить действие.Например, если они установят флажки в строках 1 и 2, данные из других столбцов в строках 1 и 2 могут быть выбраны и переданы в messagebox.

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

Это было полезно?

Решение

На кнопке Нажмите событие сделать:

static int SelectColumnIndex = 0;
PerformAction_Click(object sender, System.EventArgs e)
{
    string data = string.Empty;
    foreach(DataGridViewRow row in MyDataGridView.Rows)
    {
      if(row.Cells[SelectColumnIndex].Value!=null &&
             Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)
      {
        foreach(DataGridViewCell cell in row.Cells)
        {
          if(cell.OwningColumn.Index!= SelectColumnIndex)
          {
            data+= (cell.Value + " ") ; // do some thing
          }
        }
        data+="\n";
      }
   }
   MessageBox.Show(data, "Data");
}

Другие советы

Если вы хотите, чтобы пользователь нажал на кнопку для выполнения действия, то вам нужно обработать событие нажатия кнопки, а не событие изменения флажка...Когда кнопка нажата, просто пройдите по всем строкам вашего DataGridView и выполните действие над строками с установленным флажком.

static int SelectColumnIndex = 0;

PerformAction_Click(object sender, System.EventArgs e)
{
    string data = string.Empty;    

    foreach(DataGridViewRow row in MyDataGridView.Rows)     
    {
        if(row.Cells[SelectColumnIndex].Value != null 
            &&
         Convert.ToBoolean(row.Cells[SelectColumnIndex].Value) == true)       
        {
            foreach(DataGridViewCell cell in row.Cells)        
            {
                if (cell.OwningColumn.Index != SelectColumnIndex)                               
                {
                    data+= (cell.Value + " ") ; // do some thing           
                 }
            }

            data+="\n";
        }
    }

    MessageBox.Show(data, "Data");
}

Я думаю, вам не нужно какое-либо событие я решил эту проблему с помощью этого кода:

//In Fill DataGridViewEvent :
        DataGridViewCheckBoxColumn ChCol = new DataGridViewCheckBoxColumn();
        ChCol.Name = "CheckedRow";
        ChCol.HeaderText = "انتخاب";
        ChCol.Width = 50;
        ChCol.TrueValue = "1";
        ChCol.FalseValue = "0";
        dg.Columns.Insert(0, ChCol);

// In Button Event put these codes:

            try
            {
                MessageBox.Show(row.Cells[2].Value.ToString() + " --> " +
                row.Cells["CheckedRow"].Value.ToString());
            }
            catch
            {
                // Nothing Act
            }


enter code here

Ваш вывод с помощью этого параметра :ItemId --> 0 // Для непроверенных значений ItemId --> 1 // Для проверенных значений

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top