Entwickler-Ecke

WinForms - DataGridView Select in Spalte unterdrücken


Trombone - Fr 02.09.11 14:16
Titel: DataGridView Select in Spalte unterdrücken
Moin,
gibt es eine Möglichkeit in einer DataGridView die erste Spalte für die auswahl zu sperren?
Ich meine damit nicht nur Read Only sondern komplett Select zu unterdrücken.

Gruß!


mats74 - Mi 07.09.11 11:44

Hallo Trombone

Ich habe in meinem Projekt das gleiche Problem.
Ich muss in einer DataGridView in gewissen Spalten die Select-Anweisung unterdrücken.
Aber ich habe bis jetzt keine Lösung gefunden, dies zu ermöglichen.

Hat da irgendjemand doch noch eine Idee?

Sehr professioneller Lösungsansatz:
Die Farbe der Selektion gleichsetzen wie DataGridView-Hintergrundfarbe (gehört definitiv in die Bastelabteilung) :P

Gruss
mats74


dark-destination1988 - Mi 07.09.11 12:20

naja eventuell beim click ereignis testen ob die gewählte zeile der ersten entspricht und wenn ja --> selection aufheben


Ralf Jansen - Mi 07.09.11 12:53

Bevor man da sinnvoll was raten kann. Geht es nur um die Selektion einer Row und/oder auch um den Focus einer Row? Und dann die Rows die man Selekieren/Fokusieren in MultiSelect oder immer nur eine Row?


mats74 - Mi 07.09.11 13:49

Hallo zusammen

user profile icondark-destination1988 hat folgendes geschrieben Zum zitierten Posting springen:
naja eventuell beim click ereignis testen ob die gewählte zeile der ersten entspricht und wenn ja --> selection aufheben


... das ist eigentlich der richtige Ansatz.
Ich habe für mich nun eine Lösung gefunden, die ich akzeptieren kann.


C#-Quelltext
1:
2:
3:
4:
5:
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected = false;
            dataGridView1.Rows[e.RowIndex].Cells["DEINSPALTENNAME"].Selected = true;
        }


Mit diesem Event sind die Maus-Ereignisse und die Selektion mit der Tastatur abgefangen.
Die gewünschte (editierbare) Zelle erhält gleich nach der Selektion einer beliebigen Zelle den Fokus und das unschöne Aufflackern der fälschlicherweise selektierten Zelle entfällt.
Die beliebig selektierte Zelle wird farblich also zu keinem Zeitpunkt verändert.

Wenn man mehrere editierbare Zellen (Spalten) hat, kann man diese mit einer IF-Anweisung natürlich ansteuern und den User zur richtigen Eingabe zwingen.

Gruss
mats74