Forum: PC-Programmierung Combobox im Datagridview


von Rainer (Gast)


Lesenswert?

Hallo zusammen,

mit C# und DotNet 2.0 möchte ich eine Combobox innerhalb eines 
Datagridviews verwenden. Das DataGridview ist ungebunden (und soll 
auch so bleiben), d.h. ich fülle die einzelnen Zellen von Hand. Jetzt 
ist die Combobox dran.

Beim Anlegen wird folgendes voreingestellt:
1
DataGridViewComboBoxColumn colPar;
2
colPar.ValueType = typeof(myParameter);
3
[...]

Zur Laufzeit fülle ich dann die zur Wahl stehenden Elemente ein:
1
List<myParameter> ListeParameter = new List<myParameter>();
2
ListeParameter.Add(new myParameter()); /* usw. */
3
[...]
4
colPar.DataSource = ListeParameter;

Damit erreiche ich, dass meine Combobox mit den gewünschten Werten 
vorgeladen wird. Soweit noch i.O.

Da ich ja ungebunden arbeite, muss ich im validated-Ereignis noch den 
ausgewählten Wert an meine Datenstruktur zuweisen. Nur wie komme ich an 
den ausgewählten Wert? Validated/Validating liefern bestenfalls den in 
der Combobox angezeigten String -> unbrauchbar. Eigentlich habe ich ja 
ein Objekt in die Combobox gefüllt (nämlich was vom Typ myParameter) und 
möchte auch wieder ein Objekt zurückbekommen!! (Anhand des gelieferten 
Strings kann ich keine Rückschlüsse auf das selektierte Objekt ziehen - 
wäre ja eigentlich auch Pfusch).
Wie erhalte ich das selektierte Objekt?


Die Eigenschaften "ValueMember, DisplayMember, DataPropertyName usw. 
benötige ich ja nur bei gebundenen DGVs, richtig?

Auch über das Ausfüllen der Items-Collection erhalte ich nach der 
Selektion nur Strings zurück.

Wer kann mir Hilfestellung geben?
Vielen Dank.

von Sven '. (--j)


Lesenswert?

Ohne jemals C# und .NET verwendet zu haben:
Kannst du herausfinden welchen Index der String in der ComboBox hat 
(bzw. in einer Liste von Strings hat, falls eine solche an der ComboBox 
klebt) und eben jenen Index für den Zugriff auf das Objekt verwenden?

von Rainer (Gast)


Lesenswert?

Gute Idee, leider erhalte ich im CellValidating-Ereignis nur 
"SpaltenNr", "ZeilenNr" und den "FormattedText" als String - kein Index, 
kein Object, nichts.

von Sven '. (--j)


Lesenswert?

Scheint mir so, als ob das Ereignis zur Zelle gehört, nicht zur 
ComboBox.
Also wie wäre es mit dem Folgenden:
Aus der Zelle erst mal das ComboBox-Objekt herausfischen und dann mit 
diesem weiterarbeiten? Das wäre mein Ansatz für Delphi und gutgläubig 
wie ich bin, würde ich diesen zunächst auch in C# ausprobieren.

von Jean (Gast)


Lesenswert?

Hi,
bin mir nit sicher ob das in deinem Fal klappt,
aber weise den ComboBox Items "Tags" zu und verwalte sie durch diese.

Viel erfolg und Frohes Fest.

von Rainer (Gast)


Lesenswert?

> Scheint mir so, als ob das Ereignis zur Zelle gehört, nicht zur
> ComboBox.
Ja, glaube ich auch. Aber die Combobox (als DgvCombobox) kennt keine 
eigenen Ereignisse (speziell kein SelectionChanged o.ä.)?!??

> aber weise den ComboBox Items "Tags" zu und verwalte sie durch diese.
An den Tags hängen Verweise an meine Datenstruktur. Diese ändern sich 
aber leider (bzw. natürlich) nicht, wenn ich eine neue Auswahl in der 
Combobox einstelle. Genau das möchte ich ja erreichen. Die neue Auswahl 
als Objekt geliefert bekommen und dieses dann meiner Datenstruktur 
zuweisen.

Gibt's sonst noch Ideen, Vorschläge, Hinweise?

Danke.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.