Подтвердить что ты не робот

Первый столбец DataGridView, первая строка, выбирается в Load, я не хочу этого

Итак, в основном первый столбец в первой строке всегда выбран, я не могу понять, как это сделать, поэтому в gridview нет выделенных ячеек. Любая помощь?

4b9b3361

Ответ 1

У меня была такая же проблема, и ничего не работало. Решение, которое сработало для меня, это установить свойство "Tabstop" для False и вызвать метод ClearSelection() сразу после привязки данных.

Ответ 2

У меня были проблемы с этим. У меня есть пользовательский элемент управления с DataGridView, который заполняется загрузкой приложения/формы. Выбор первой строки, по-видимому, происходит после завершения привязки данных, и сетка заполняется/отображается. Событие загрузки пользовательского управления (и, предположительно, формирует нагрузку) срабатывает до этого - поэтому вызов gridView.ClearSelection() или обнуление gridView.CurrentCell в этих событиях загрузки не имеет никакого эффекта.

Что, наконец, для меня работало, вызывало .ClearSelection() из события DataBindingComplete самого DataGridView. Это работало как прелесть.

Ответ 3

Установите для свойства DGV CurrentCell значение null после привязки данных к DGV:

dataGridView1.CurrentCell = null; 

Обратите внимание, что это не предотвратит запуск DGV-событий, связанных с отбором строк и ячеек; вам нужно будет добавить выбранные проверки строк или ячеек на события RowEnter, примерно так:

private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e) {
    if (dataGridView1.SelectedRows.Count == 1) {
        // Do stuff since a row is actually selected ...
    }
}

Ответ 4

Вы должны вызвать: ClearSelection после события: DataBindingComplete

Ответ 5

после того, как ограничивающие данные просто вызовет

dataGridView.ClearSelection();

Я думаю, вы пытались вызвать его перед установкой данных в dataGrindView, если вы даже когда-либо пробовали его

Ответ 6

ЕСЛИ я понимаю Q. Это предотвращает показ ячейки после привязки данных. Таким образом, задний цвет остается белым. Вы также можете редактировать столбцы и устанавливать их там.

DataGridView.DefaultCellStyle.SelectionBackColor = DataGridView.DefaultCellStyle.BackColor;

Ответ 7

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

С предложениями выше выбор может быть скрыт, но никто не может помешать ячейке получить reset, когда мой поток GUI вызывает dataGridView.Rows.Add() с выделенным. Это включает в себя подключение событий для предотвращения выбора и отключение режима редактирования.

Я нашел поведение, которое я хотел с помощью

dataGridView.AllowUserToAddRows = false;

Теперь у меня есть динамически настроенная асинхронно загруженная сетка данных, доступная только для чтения.

Мне не понравилось решение BackgroundWorker, потому что прогресс - это большая нагрузка на мой код загрузки. Мне также не нравилось требование перестроить новый DataTable при каждом обновлении сетки. Я не мог найти никаких подсказок по обновлению DataGridView с помощью одного DataTable, который создается, но похоже, что это должно быть возможно.

Ответ 8

Убедитесь, что вы не вызываете метод для загрузки данных из конструктора формы. Если вы вызываете его из формы .load()

также после загрузки datagridview выполните это

DataGridView.Rows[0].Selected = false;

Ответ 9

У меня была такая же проблема в моем случае, вместо того, чтобы установить видимость первой строки на false. Было бы лучше установить значение GridColor, чтобы избежать риска при событии SelectionChanged.

  • Поместите dgv.ClearSelection() в событие DataBindingComplete и установите GridColor в BackColor DataGridView.

  • Установите GridColor на видимый цвет (например: серый) на ваш метод заполнения/запуска.

Ответ 10

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

Ответ 11

У меня была такая же проблема, и я решил ее переопределить событие OnPropertyChanged в GridView

protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
  base.OnPropertyChanged(e);
  this.ClearSelection();
}

Ответ 12

Event _MasterRowExpanded(object sender, CustomMasterRowEventArgs e)
GridView gv = (sender as GridView).GetDetailView(e.RowHandle, e.RelationIndex) as 
GridView;
gv.ClearSelection();