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
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
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;
}
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