Also im Grunde die allererste Spalte in der ersten Zeile ist immer ausgewählt, ich kann nicht herausfinden, einen Weg, um es zu haben, so dass die Gridview keine ausgewählten Zellen hat. Jede Hilfe?
Antworten
Zu viele Anzeigen?Ich hatte das gleiche Problem in meinem Fall, anstatt die Sichtbarkeit der ersten Zeile auf false zu setzen. Es wäre besser, den GridColor-Wert zu setzen, um das Risiko zu vermeiden, dass SelectionChanged Ereignis .
-
Setzen Sie dgv.ClearSelection() auf DataBindingComplete Ereignis und setzen Sie GridColor auf Ihre DataGridView BackColor.
-
Setzen Sie GridColor auf die sichtbare Farbe (z.B.: Grau) in Ihrer Populate-Methode / dem Feuerevent.
Wenn ich die Frage richtig verstehe, wird dadurch verhindert, dass eine Zelle nach der Datenbindung ausgewählt wird. Die Hintergrundfarbe bleibt also weiß. Sie können auch die Spalten bearbeiten und sie dort einstellen.
DataGridView.DefaultCellStyle.SelectionBackColor = DataGridView.DefaultCellStyle.BackColor;
Ich wollte auch read-only DataGridView, und in meinem Fall ist ein separater Thread langsam erhalten Daten und Übergabe an den GUI-Thread über eine Multi-Thread-Liste, und Form-Timer. Bei diesem Ansatz erweitert der GUI-Thread das Datengitter nach Bedarf und ermöglicht gleichzeitig das Durchsuchen.
Mit obigen Vorschlägen konnte die Auswahl ausgeblendet werden, aber keiner konnte verhindern, dass die Zelle zurückgesetzt wird, wenn mein GUI-Thread dataGridView.Rows.Add() mit einer Auswahl aufruft. Dazu gehören Hooking-Ereignisse, um die Auswahl zu verhindern, und Deaktivieren des Bearbeitungsmodus.
Ich habe das gewünschte Verhalten mit
dataGridView.AllowUserToAddRows = false;
Jetzt habe ich ein dynamisch dimensioniertes, asynchron geladenes Datengitter, das schreibgeschützt ist.
Ich mochte die BackgroundWorker-Lösung nicht, weil der Fortschritt eine ziemliche Belastung für meinen Ladecode ist. Ebenso wenig gefiel mir die Anforderung, bei jeder Aktualisierung des Gitters eine neue DataTable zu erstellen. Ich konnte keine Hinweise zum Aktualisieren der DataGridView mit einer DataTable, die aufgebaut wird, finden, aber es scheint, wie dies möglich sein sollte.