[c#] DataGridView Zellen editieren / Reihen löschen

BeaTBoxX

Erfahrenes Mitglied
Hallo zusammen,

kann mir bitte jemand nen Hinweis geben, wie ich mit selectedRows eineZeile aus dem DataGridView lösche?, und wie ich es hinkriege eine markierte Zelle mit Text zu editieren?
Habe auch hier schon rumgesucht aber nix passendes gefunden.
Wie genau funktioniert das mit Beginedit & Endedit ?


Vielen Dank

Gruß
Frank
 
Zuletzt bearbeitet:
hmm... habe bisher nur c1FlexGrid verwendet...

Gibts nicht Methoden wie Remove oder RemoveAt?

Ich glaube, den Wert einzelner Zellen kannst du ändern, indem du sie direkt ansprichst und einfach einen Wert zuweist:
C++:
Grid[row, col] = "Text";
...zumindest beim FlexGrid so...

Begin- und EndEdit sind Events...

Damit kannst du festlegen, wie dein Programm vorgehen soll, wenn eine Zelle editiert wird / wurde... Lies mal in der MSDN nach, da findest du sicher etwas ^^

mfG
the incredible Leitman
 
Oh sorry hast mich falsch verstanden,

ich meine natürlich editieren als Benutzer der App. , nicht im Code %)
Also auf Zelle klicken -> Text editieren können. Und in der MSDN hab ich schon bissl gesucht. entweder war ich zu doof, oder das Thema wird so direkt nicht behandelt %)

Danke schonmal


Gruß
Frank
 
Ah ich hab schon einiges gefunden:

Grid muss readonly = false sein und ensprechender Editmode gesetzt, dann kann man per beginedit editieren.

DataGridView.AllowUserToDeleteRows
laesst loeschen einer Row per "del" drücken zu.

Frage noch:

Mit welcher Methode lösche ich eine bestimmte (selektierte) Row? Also wenn ich das z.b. durch drücken eines Buttons auslösen will?
 
hm.. ich versteh nicht ganz :confused:

Willlst du die Zellen nun komplet löschen oder editieren

Eigentlich ist das glaub is standard, dass sich die einzelnen Zellen über die Tastatus editieren lassen?
Also wie in Excel...

Wenn du komplette Spalten oder Zeilen löschen möchtest kommst du wahrscheinlich nicht drum rum, dir ein ordentliches Event Handling schreiben zu müssen ^^

Probiers doch mal mit Key Events ^^

Also, wenn "DEL" gedrückt wird ->Remove

EDIT 2:
*lol*
Sag ich doch ^^ ...nur halt später >.<
oder über ein Kontext Menu, das du bei rechter Maustaste anzeigst?
Mit Spalte / Zeile hinzufügen / entfernen?


EDIT:
Ich verstehe dein Problem nicht o_O

Habe gerade ein bisschen mit dem DataGrid experimentiert.

Wenn die Anwendung läuft, kann man als Benutzer mit den Default Einstellungen einfach Werte (neue Zeilen) hinzufügen, indem man einfach Text über die Tastatur eingibt.
Genauso kann ich sie editieren... wie in Excel.

Löschen kannst du einzelne Zeilen, indem du ganz links auf den frozen Bereich drückst und dann "Entfernen".

Vielleicht sind die Properties "AllowUserToAddRows" und "AllowUserToDeleteRows" deaktiviert?

mfg
the incredible Leitman
 
Zuletzt bearbeitet:
Es gibt die Properties "CurrentCell", "CurrentRow"
die dir ein Object zurückgeben.

Diese kannst du dann einfach löschen.
C++:
this->dataGridView1->Rows->Remove(this->dataGridView1->CurrentRow);
Geht natürlich auch über den Index... mit RemoveAt(index)

Weiß nicht ob das funktioniert, war lediglich eine logische Schlussfolgerung auf die Properties,
kann mir aber vorstellen, das das klappt ^^

Wenn nicht...
Tja, du weißt ja, wo du mich findest :D

mfG
da Leitman
 
Zuletzt bearbeitet:
Ja klappt alles soweit.. ich Vogel hab beim anlegen der Collumns bei einem ein Readonly True gesetzt.

Da hilft ein allgemeines Readonly false bei dem DataGridView objekt natuerlich nix o_O


soweit so gut.

Frage noch:

Ich hab das so verstanden: sobald ich das edieren beendet habe (Text rein -> Enter)
wird der EndEdit Event ausgelöst. ist das falsch?

Ich finde in der Eventliste nur ein CellEndEdit. das ist doch nicht das gleiche oder?
Mein Ziel ist die Inhalte des Grids in einen Container zu übernehmen. Aber anscheinend hab ich den falschen Event %)

Hast du noch nen Tip fuer mich?

Danke

Gruß
Frank
 
Hey yo ^^

Ich habe gerade zuhause mir noch einmal das DataGrid angesehen...
Wer lesen kann ist klar im Vorteil:
CellEndEdit... Occurs when edit mode stops for the currently selected cell.
und das habe ich aus der MSDN ;P
Doch, der Beschreibung nach zu urteilen, würde ich sagen, das ist genau das, was du suchst ^^
Wie bereits erwähnt, ich hatte bis heute nur mit dem Component One FlexGrid zu tun,
da heißt das halt anders, tut aber das Gleiche.

Wie jetzt falsches Event? o_O :confused:
Wird es nicht aufgerufen oder wie?
Aber so würd ichs auch machen...

Im CellEndEdit Event Handler eine Methode, die den Inhalt der aktuellen Zelle (->CurrentCell) in einem Array/List/Collection Member speichert...

Funktioniert das etwa nicht?

mfg
the incredible Leitman

PS: Hab heute leider noch viel zu tun, werde bei Gelegenheit morgen nochmal sehen, was ich machen kann ^^
 
Hm ich hab beim auftreten des Events gleich das ganze Grid ausgelesen. Evtl sollte ich mal explizit die eine Zelle angreifen. Naja gut mal sehen ich probier das mal aus.

Was ist an der Gridklasse, die du verwendest anders?


Gruß
Frank
 
Naja... Prinzipiell ander ist nichts..
Nur ist das Ding halt kein Windows Forms Control, sondern was eigenes...
verwendet eigene Structs, die Events heißen anders.... Und sieht ein bisschen mehr nach Excel aus, nicht so wie das DataGridView Ding.
 

Neue Beiträge

Zurück