C#: Как в DataGridView в столбце с CheckBox'ами проставить галочки во всех ячейках?

программирование программы windows C# .net

Проблема в следующем: надо чтобы при нажатии на заголовок столбца во всех ЧекБоксах проставлялись или снимались галочки. Попробовал реализовать это нижеприведённым способом, но работает очень медленно, особенно когда 200 строк. Есть ли другие варианты? Очень надо работать с большим объёмом данных.

// ЕСЛИ НАЖАЛИ НА ЗАГОЛОВОК столбца Changeable
if (e.ColumnIndex == 3 && e.RowIndex == -1)
{

// Подтверждает наличие выделенных и невыделенных ячеек
bool selected = false;
bool unselected = false;

// Проверка, есть ли ВЫДЕЛЕННЫЕ и НЕВЫДЕЛЕННЫЕ ячейки
for (int i = 0; i < myTable.Rows.Count; i++)
{
if (myTable.Rows[i].Cells[3].Value == null) selected = true;
if (myTable.Rows[i].Cells[3].Value == null) unselected = true;
}

// Если все ячейки выделены, то СНИМАЕМ ВЫДЕЛЕНИЕ СО ВСЕХ
if (selected == true && unselected == false)
for (int i = 0; i < myTable.Rows.Count; i++) myTable.Rows[i].Cells[3].Value = null;

// Иначе, ВЫДЕЛЯЕМ ВСЕ
else
for (int i = 0; i < myTable.Rows.Count; i++) myTable.Rows[i].Cells[3].Value = 1;

}
Ответы:
private void dataGridView1_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
       {
           for (int i = 0; i < dataGridView1.Rows.Count-1; i++)
               dataGridView1.Rows[i].Cells[0].Value = !(bool)dataGridView1.Rows[i].Cells[0].Value;
       }


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.