Laden...

DataGridView - ReadOnly = false für Zelle nicht setzbar

Erstellt von telfa vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.677 Views
T
telfa Themenstarter:in
156 Beiträge seit 2012
vor 9 Jahren
DataGridView - ReadOnly = false für Zelle nicht setzbar

Hallo zusammen,

welchen Grund kann es gaben dass in einem DataGridView das ReadOnly nicht für einzelne Zellen, sondern nur für das DGV auf false gesetzt werden kann?
Gibt es eine übergeordnete Eigenschaft die hier zu beachten wäre?

Vielen Dank und viele Grüße,
telfa

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo

ich verstehe deine Frage nicht genau oder sie geht von falschen Annahmen aus.

Es gibt DataGridViewCell.ReadOnly, womit man einzelne Zellen schützen kann.

Außerdem steht in Wie lege ich in einem DataGridView bestimmte Zellen als schreibgeschützt fest?:

Somit kann der Schreibschutz für das gesamte Steuerelement, für bestimmte Spalten und Zeilen sowie für einzelne Zellen festgelegt werden.

Oder meinst du, das ganze DGV readonly setzen und dann eine einzelne Zelle davon ausnehmen? Kann sein, dass das so nicht geht. Es kommt darauf an, wie der Schreibschutz der einzelnen Ebenen (Grid, Zeile, Spalte, Zelle) verknüpft wird. Wenn es eine ODER-Verknüpfung ist (wovon ich mal ausgehe), gewinnt natürlich immer der Schutz, nicht dessen Aufhebung.

herbivore

T
telfa Themenstarter:in
156 Beiträge seit 2012
vor 9 Jahren

Hallo herbivore,
danke für deine Antwort.
Und stimmt, meine Aussage ist unklar.
Also noch einmal und mit mehr Inhalt:
Ich habe ein DataGridView, dass ich vorab auf ReadOnly gesetzt habe.
In bestimmten Abhängigkeiten werden dann einzelne Zellen des DGV auf ReadOnly=false gesetzt.
Der Quellcode innerhalb der If-Bedingung wird auch erreicht. Aber auch nach dem setzen auf false steht ReadOnly auf true.
Daher frage ich mich ob eine übergeordnete Situation/Einstellung das verhindert.

Hier der Quellcode dazu:


            foreach (DataGridViewRow dgR in dgvRechPos.Rows)
            {
                //Bemerkung immer nutzbar
                dgR.Cells[4].ReadOnly = false;

                //Wenn kein Betrag enthalten ist Betrag nutzbar
                if (dgR.Cells[3].Value == null)
                    dgR.Cells[3].ReadOnly = false;

                //Wenn Betrag enthalten und noch nicht berechnet Marker nutzbar
                if (dgR.Cells[3].Value != null && dgR.Cells[5].Value == null)
                    dgR.Cells[0].ReadOnly = false;

                //Wenn Betrag enthalten und berechnet aber noch nicht bezahlt, Zahldatum nutzbar
                if (dgR.Cells[3].Value != null && dgR.Cells[5].Value != null && dgR.Cells[6].Value == null)
                    dgR.Cells[6].ReadOnly = false;
            }

49.485 Beiträge seit 2005
vor 9 Jahren

Hallo telfa,

im Reflector sieht es wirklich so aus, als würden übergeordnete ReadOnly-Einstellungen per ODER verknüpft. Spricht, wenn ein übergeordnetes ReadOnly true ist, kann ein unterordnete nicht false sein.

Also: Works as designed.

herbivore