Autor Beitrag
DrHoas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Fr 08.01.16 09:10 
Hallo,

im Titel steht "DataGridView" aber vielleicht ist das ja gar nicht das richtige für mich. Folgendes möchte ich realisieren:
Ich brauche eine Tabelle. In der ersten Spalte stehen nur strings. In der zweite Spalte sind manche Zellen leer, manche enthalten eine ComboBox, andere ein NumericUpDown. Anbei ein Bild zum Verdeutlichen, wie es prinzipiell aussehen soll (hier mit einer ListBox).

Gibt es dafür eine einfache Möglichkeit?

Dank und Gruß

Philipp
Einloggen, um Attachments anzusehen!
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Fr 08.01.16 10:54 
Hallo,

du müßtest ein eigenes Control erstellen, welche diese Funktionalität (wechselseitige Anzeige verschiedener Controls) bereitstellt und der DataGridView-Column zuordnen (auf Basis der IDataGridViewEditingControl-Schnittstelle).
Im DataGridView.EditingControlShowing-Ereignis kannst du dann die Logik implementieren, das richtige dieser Controls auszuwählen und anzuzeigen.

Das Control DataGridViewComboBoxEditingControl kannst du ja einfach benutzen, nur für die NumericUpDown-Klasse müßtest du ein eigenes DataGridViewNumericUpDownEditingControl erstellen (analog zum CalendarEditingControl im Beispiel zu obigen Link).

Hier ein genereller Artikel dazu: Create a Custom DataGridView Column (auch wenn dort ein eigenes Control per Paint gezeichnet wird).

Und evtl. noch als Anschauungsobjekt Hosten von Steuerelementen in DataGridView-Zellen - Parameterübergabe an EditingControl.
Talemantros
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 444
Erhaltene Danke: 2

Win7 Proff 64bit
C# (VS2013)
BeitragVerfasst: Fr 08.01.16 11:39 
Hallo Philipp,
ich weiß nicht wie fit du in C# bist, ich persönlich wäre mit dem eigenen Control schon völlig überfordert.
Mit meinen momentanen Kenntnissen käme für mich ein anderer Lösungsweg in Betracht.
Da dies für dich vielleicht auch so ist, wollte ich dir den mal hier schreiben.

Sollte dies nicht der Fall sein, kannst du ja meinen Eintrag überlesen und solange ich nichts völlig falsches schreibe, hoffe ich mal mich haut kein MOD :-)

Mir würde zu deiner Anfrage folgendes in den Sinn kommen.
Ich würde vermutlich Standard DataGridView nehmen zur Anzeige.
Daneben würde ich die entsprechenden Felder mit NumericUPDOWN und Textfelder etc. machen und diese über eine BindingSource verknüpfen, so dass wenn jemand im DGV eine Zeile auswählt die entsprechenden Controls zur Bearbeitung geladen werden.
Änderungen dort würden dann im DGV angezeigt werden.

Gruß
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Fr 08.01.16 11:47 
Was stellen die Strings dar? Sind die dynamisch? Wenn ja woher weißt du welches Control (ComboBox, NumericUpDown du brauchst?).

Ist nur eine Vermutung. Aber mit einem leicht anderen Anwendungsdesign ist vielleicht ein PropertyGrid das Richtige. Ein PropertyGrid entspricht zum Beispiel in Visual Studio dem Control das die Properties/Eigenschaften eines Winforms Controls anzeigt.
DrHoas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Fr 15.01.16 09:08 
Hallo,

danke für eure Hilfe!

Ich hab mein Projekt aus anderen Gründen inzwischen auf WPF umgestellt und da geht das dann mit einem grid ganz einfach. (Allerdings gibt es kein NumericUpDown, das ich mir dann erst basteln bzw. googeln musste).

Grüße

Philipp
Yankyy02
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 138
Erhaltene Danke: 21

Win 11 x64
C# (VS 2022 - Rider)
BeitragVerfasst: So 17.01.16 01:14 
Hallo DrHoas,

für WPF kannst du dir das Extended WPF Toolkit einbinden und hier das IntegerUpDown Control verwenden.

LG

_________________
the quiter you become, the more you are able to hear