In Combox auswählen, welche Zeilen in DGV angezeigt werden sollen.
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 48 Antworten in diesem Thema. Der letzte Beitrag () ist von TIecIh.
-
-
Wat?
item
sollList(Of Integer)
sein?? Wie kommste denn da drauf?
Guck in dein Code, wo istitem
da eiglich deklariert?
-
Was soll das sonst sein? DataGridView1.SelectedRows ist ja kein Objekt
Deklariert ist das da nicht.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TIecIh“ ()
-
Natürlich ist DataGridView1.SelectedRows ein Objekt - alles ist ein Objekt. Hat aber nix damit zu tun.
Meine Frage war aber einfach, wo item deklariert sei. Und die Antwort lautet: In Zeile #1.
Ja, innerhalb der ForEach - Schleife wird die Laufvariable deklariert - ist wichtig zu wissen.
Schlampige Erklärung, was eine Deklaration eigentlich ist findest du hier: Grundlagen: Fachbegriffe
Aber ich geb zu, es ist ein bischen lausig, denn die item-Deklaration dort hat gar keine As - Klausel, daher kann man dem Code den Datentyp von item nicht direkt ansehen.
Und noch lausiger ist, dass .SelectedRows ihre Elemente zunächstmal untypisiert bereitstellt, also als TypObject
.
Dabei sind inDataGridView.SelectedRows
doch logischerweiseDatagridViewRow
drinne - was soll denn sonst drinne sein?
Also mach die item -Deklaration in der Foreach-Schleife richtig, und bring dann deinen Code in Ordnung:
So programmiert man Strict On: Der Compiler zeigt, wo Datentypen nicht zusammenpassen, und es ist an dir, die Datentypen richtig zu respektieren.
Einfach alles umwandeln in das, was man gerne hätte ist halt Unfug, und das sagt dir dann (erinnere dich) der Laufzeitfehler: "Ich kann eine DatagridviewRow nicht in einen Integer umwandeln".
Wie gesagt: Wenn man den Compiler lässt, dann weiß der das schon im Voraus.
Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()
-
-
-
-
-
-
Ich kann mir halt nichts anderes als das hier vorstellen:
VB.NET-Quellcode
- Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.MultiSelectChanged
- Try
- For Each item As DataGridViewRow In DataGridView1.SelectedRows
- DataGridView1.Rows(item).Cells(0) = New DataGridViewCheckBoxCell
- DataGridView1.Rows(item).Cells(0).Value = True
- Next
- Catch
- End Try
- End Sub
nur leider ist es nicht möglich aufgrund dieses Fehlers:
"Public Overloads ReadOnly Property Cells As DataGridViewCellCollection" hat keinen Parameter, und der Rückgabetyp kann nicht indiziert werden.
-
-
-
TIecIh schrieb:
Nein.
Sicher?
weil wenn ich dein Code bei mir einkopiere erhalte ich einen ganz anderen CompilerFehler...
-
-
-
DataGridView1.Rows(item).Cells(0) = New DataGridViewCheckBoxCell
DataGridView1.Rows(item).Cells(0)
Rot = "Public Overloads ReadOnly Property Cells As DataGridViewCellCollection" hat keinen Parameter, und der Rückgabetyp kann nicht indiziert werden.
Unterstrichen = Der Wert vom Typ "DataGridViewRow" kann nicht in "Integer" konvertiert werden.
-
die erste Zeile erstmal auskommentieren, und die zweite angucken.
Was für ein Datentyp wird denn da erwartet in der Klammer? Weil was da drin ist, ist ja falsch.
Also am einfachsten kriegt man das raus, wenn man die öffnende Klammer löscht und neu wieder eintippt - dann sagt Intellisense, welcher Datentyp da erwartet wird.
DataGridView1.Rows(item).Cells(0)
Also - welcher Datentyp wird an der Stelle erwartet? -
-
Wie du weiter oben schon bemerkt hast, ist
item
eine DataGridViewRow und die hat verschiedene Eigenschaften... -
Genau Doch wie mache ich das jetzt?
Für mich ist die logik:
VB.NET-Quellcode
- For Each item As DataGridViewRow In DataGridView1.SelectedRows 'für jede Reihe von den Selektieren Reihen:
- DataGridView1.Rows(item).Cells(0).Value = True
- 'DataGridView1.Rows(Aktuelle Reihe der For Schleife also item. Aber item ist eine DGVR also kein Integer, der den index der Reihe festlegt. Muss ich das mit.count machen oder index(of...) ich komme hier halt nicht weiter...).Cells(0).Value = True
- Next
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „TIecIh“ ()
-
Ähnliche Themen
-
3 Benutzer haben hier geschrieben
- TIecIh (25)
- ErfinderDesRades (13)
- VB1963 (11)