Как установить несколько флажков в сетке данных с помощью C # - PullRequest
0 голосов
/ 28 марта 2012

Мне нужно, чтобы конечный пользователь отмечал несколько флажков в datagridview моего приложения C # одновременно, используя событие checkbox_checkChanged, когда они использовали мышь, чтобы сначала выделить нужные ячейки. Таким образом, в основном конечный пользователь будет использовать свою мышь, чтобы выделить ячейки в сетке данных, а затем нажать на флажок2, который должен поставить флажок в каждой строке, в которой он выделил ячейку.

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

private void checkBox2_CheckedChanged(object sender, EventArgs e)
    {
        Int32 selectedCellCount = dgv2.GetCellCount(DataGridViewElementStates.Selected);
        if (selectedCellCount > 0)
        {
            if (dgv2.AreAllCellsSelected(true))
            {
                MessageBox.Show("All cells are selected", "Selected Cells");
            }

            else
            {
                System.Text.StringBuilder sb = new System.Text.StringBuilder();

                for (int i = 0;
                    i < selectedCellCount; i++)
                {
                    sb.Append("Row: ");
                    sb.Append(dgv2.SelectedCells[i].RowIndex.ToString());
                    sb.Append(", Column: ");
                    sb.Append(dgv2.SelectedCells[i].ColumnIndex.ToString());
                    sb.Append(Environment.NewLine);
                }


                sb.Append("Total: " + selectedCellCount.ToString());
                // confirmation
                MessageBox.Show(sb.ToString(), "Selected Cells");

                foreach (DataGridViewRow row in dgv2.Rows)
                {
                    row.Cells[2].Value = checkBox2.Checked && String.IsNullOrEmpty(row.Cells[0].ErrorText);
                }

            }
        }
    }

Пожалуйста, помогите ...

1 Ответ

0 голосов
/ 28 марта 2012

Я вижу, ваш код отсюда: http://msdn.microsoft.com/en-us/library/x8x9zk5a.aspx но вместо этого:

foreach (DataGridViewRow row in dgv2.Rows)
{
    row.Cells[2].Value = checkBox2.Checked && String.IsNullOrEmpty(row.Cells[0].ErrorText);
}

Вы должны следовать тому, что говорится в статье, здесь это укажет вам правильное направление:

for (int i = 0; i < selectedCellCount; i++)
{
dataGridView1.SelectedCells[i].Value = true;
}
...