www.mikrocontroller.net

Forum: PC-Programmierung Combobox im Datagridview


Autor: Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
DataGridViewComboBoxColumn colPar;
colPar.ValueType = typeof(myParameter);
[...]

Zur Laufzeit fülle ich dann die zur Wahl stehenden Elemente ein:
List<myParameter> ListeParameter = new List<myParameter>();
ListeParameter.Add(new myParameter()); /* usw. */
[...]
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.

Autor: Sven '\0' (--j)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Rainer (Gast)
Datum:

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

Autor: Sven '\0' (--j)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jean (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rainer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.