Как убрать выделение в первой ячейке DataGridView?

Убираем выделение в первой ячейке DataGridView

В комментариях многие спрашивают: «как убрать выделение в первой ячейке DataGridView»? Этот вопрос очень часто повторяется, поэтому я решил написать небольшую заметку, в которой хочу показать два простых способа решения данной задачи.

выделенная ячейка

Способ №1.

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

1. Загружаем и выводим данные.
2. Выполняем ещё какие-то действия с DataGridView.
3. dataGridView1.ClearSelection();

Способ №2.

Второй способ, в отличие от первого, позволяет убрать выделение только конкретно в первой ячейке DataGridView, а не во всех сразу же, как это делает предыдущий способ.

dataGridView1.Rows[0].Cells[0].Selected = false;

В обоих случаях Вы получите один и тот же результат.

DataGridView

На этом всё, если есть какие-то вопросы, то оставляйте их в комментариях.

Читайте также:

13 комментариев

  1. Стас says:

    Способ №3

    DataGridView.CurrentCell = null;

  2. саня says:

    а можно ли сделать так))) есть 365 столбцов каждый из них это день года с начала… и тд.
    мне нужно отметить период работы, к примеру с 15,01,15 по 25,02,15, но я хотел бы вводить только два числа 15 и 25 в текстбоксе, причем после того как я выделю диопозон ячеек в строке, всплывает форма там текстбоксы, и в двух лейблах выводилась дата начала и конца, как узнать какой месяц, я думаю задать диопозон мышки в котором она зажата а потом отпущена, к примеру если я зажал нк где то с 1 по 31 столбец это январь а с 32 ну допустим по 58 это февраль))) вот такая задачка)))

  3. Можно, тем более, что решение содержится в самом вопросе.
    Выделяешь нужный диапазон ячеек и получаешь день. Затем полученное значение передаешь, например в метод и проверяешь на вхождение в диапазоне чисел.

  4. саня says:

    а пример возможен? к тому же, я думаю, что это пригодиться

  5. самый простой пример:

    string currentMounth = null;
    private void dataGridView1_SelectionChanged(object sender, EventArgs e)
    {
    if (dgv.SelectedCells.Count > 0)
    currentMounth =  In(dgv.SelectedCells[0].ColumnIndex + 1); //получаем день года
    }
    private string In(int x)
    {
    string mounth = null;
    if (x >= 1 &#038;& x < = 31)
    {
    mounth = "Январь";
    }
    else if ()
    {
    //...
    }
    }
  6. саня says:

    админ ты крут! а как на счет, такого, я кликаю в первой строке в диапазоне с 1 по 31 столбец и выделяю потом отпуская с 32 по 58, после того как отпустил всплывает форма2, в ней два текстбокса в которых я пишу два числа, первое ставиться в первом диапазоне, а второево втором где отпустил, точнее я уточняю дни, по кнопке на второй форме(отметить) заливаеться этот диапазон!?

  7. dgv.SelectedCells &#8212; это коллекция

    //начальная ячейка
    int startCell = dgv.SelectedCells[dgv.SelectedCells.Count - 1].ColumnIndex;
    //последняя ячейка
    int endCell = dgv.SelectedCells[0].ColumnIndex;
  8. саня says:

    Админ, подскажи пожалуйста я вывожу начальное значение в текстбокс1 при клике и при upе последние в текстбокс2, как же все таки залить??))

  9. Иван says:

    Привет. Как после добавления checkboxcolumn в datagrid выделять только видимые сейчас строки в datagrid и снимать выделение по типа групповые операции &#171;выделить всё&#187;, &#171;снять выделение&#187;?

  10. Привет. Выделить или снять выделение только у всех видимых строк можно, например так:

    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
    if (row.Displayed &#038; row.Visible)
    row.Selected = true; //выделить, false - убирает выделение строк
    }
  11. Иван says:

    Хм. работает, но не совсем то. В общем спрошу еще раз:
    я добавил в датагрид колонку с чекбоксами. Прописал им код (нашел в нете) чтобы нажимались

    DataGridViewCheckBoxCell ch1 = new DataGridViewCheckBoxCell();
    ch1 = (DataGridViewCheckBoxCell)dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0];
    if (ch1.Value == null)
    ch1.Value = false;
    ch1.Value = !(bool)ch1.Value;

    далее создал чекбокс за пределами датагрид чтобы сделать типа &#171;выделить всё&#187;, просто как добавить чекбокс в хедер датагрида я не знаю как сделать. Так вот как делать выделение и снимать со строк которые сейчас в датагриде. Предложенный тобой код выделяет вообще строки которые сейчас на экране (у меня в датагриде 500 строк, на экран поместились 20 &#8212; вот 20 и выделилось), а мне нужно чтобы выделились все 500.

    И еще вопрос: как потом передать управление кнопке для выполнения операций именно с этими 500 строками??

  12. 1. Выделить все строки в dgv

    dataGridView1.SelectAll();

    2. Убрать выделение всех строк в dgv

    dataGridView1.ClearSelection();

    3. Получить все выделенные строки

    DataGridViewSelectedRowCollection selRows = dataGridView1.SelectedRows;

    Перебрать строки полученной коллекции можно, например циклом foreach:

    foreach (DataGridViewRow selRow in selRows)
    {
    }

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*