Итак, в основном первый столбец в первой строке всегда выбран, я не могу понять, как это сделать, поэтому в gridview нет выделенных ячеек. Любая помощь?
Первый столбец DataGridView, первая строка, выбирается в Load, я не хочу этого
Ответ 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();