2016-05-24 13 views
1

Ich möchte ein Objekt erstellen, das eine Zelle in DataGridView darstellt, die eine Beschriftung, ein Kombinationsfeld und ein Textfeld enthält, und die Zellen in meiner Tabelle mit diesen Werten füllen.Hinzufügen von verschiedenen Steuerelementen zu DataGridView

Ich verstehe, wie man eine benutzerdefinierte Zelle erstellt, aber jeder Artikel oder Tutorial, die ich gesehen habe, ist nur über einen Steuerelementtyp pro Zelle, und auch sehr verwirrend für mich.

las ich diese - DataGridView Control (Windows Forms)

aber einfach nicht es herauszufinden ..

gibt es also eine Möglichkeit, diese Art von Objekt zu machen?

+0

Möchten Sie alle diese Steuerelemente in einer einzelnen Zelle haben? Zeigen/bearbeiten sie denselben Wert? –

+0

Zum Beispiel sollte das Etikett einen Namen anzeigen, das Kombinationsfeld sollte eine Liste mit Namen anzeigen, aus dem ausgewählt werden soll, und das Textfeld enthält eine Telefonnummer. Wann immer der Benutzer einen Namen aus der Combobox auswählt, ändern sich das Label und die Textbox entsprechend dem gewählten Namen (natürlich aus einer Datenbank). und ja alle in einer Zelle –

+0

Es ist unklar, was genau Ihre Anforderung ist. Wenn Sie jedoch "Label", "TextBox" und "ComboBox" in "DataGridView" anzeigen müssen, müssen Sie keinen benutzerdefinierten Spaltentyp erstellen. Sie können ein schreibgeschütztes 'DataGridViewTextBoxColumn' als Label verwenden,' DataGridViewTextBoxColumn' als Textfeld und 'DataGridViewComboBoxColumn' als Combobox. –

Antwort

1

könnten Sie versuchen, Benutzersteuerung mit den erforderlichen Kontrollen zu machen und es im Inneren DGV Zelle

+0

haha ​​einfach und brillant. kann nicht glauben, dass ich nicht darüber nachgedacht habe danke! –

+0

^^ kein Problem - es gibt viele Beispiele, wie man das auf Stacks macht, viel Glück! – ChenChi

1

Platzierung Wenn ich richtig Sie Ihre Zellen verstehen einen Namen und eine Telefonnummer zu zeigen. Da jede Zelle einen einzigen Wert haben kann, müssen Sie den Namen und das Telefon in ein einzelnes Objekt (z. B. Kontakt) einbinden, und die Eigenschaft der gebundenen Datenquelle sollte von diesem Typ sein.

Sie müssen nicht alle drei Steuerelemente in einer Zelle anzeigen. Wenn Sie sich nicht im Bearbeitungsmodus befinden, benötigen Sie zwei Bezeichnungen (eine für Name und eine für Telefon). Im Bearbeitungsmodus benötigen Sie eine Combobox und ein Label (oder Textfeld, wenn Sie möchten, dass das Telefon editierbar ist - aber das könnte knifflig sein).

Dann möchten Sie eine benutzerdefinierte DataGridViewCell, benutzerdefinierte DataGridViewColumn und ein benutzerdefiniertes Bearbeitungssteuerelement erstellen.

Obwohl Sie zwei Beschriftungen als untergeordnete Elemente Ihrer benutzerdefinierten DataGridViewCell hinzufügen können, ist es viel besser, einfach Paint zu überschreiben und den Namen und das Telefon direkt auf der Zelloberfläche zu zeichnen.

Das benutzerdefinierte Bearbeitungssteuerelement kann ein beliebiges Steuerelement sein, das die IDataGridViewEditingControl-Schnittstelle implementiert. Als solches kann es ein zusammengesetztes Steuerelement sein, das eine Combobox und ein Label (oder eine Textbox) enthält. Das zusammengesetzte Steuerelement sollte das Kontaktobjekt als eine einzelne Einheit bearbeiten.

Auch die benutzerdefinierte DataGridViewColumn ist verantwortlich für die Bereitstellung der Datenquelle für den Dropdown-Teil des Bearbeitungssteuerelements.

https://msdn.microsoft.com/en-us/library/7fb61s43(v=vs.110).aspx beschreibt, wie Sie eine benutzerdefinierte Zelle und Spalte erstellen.

https://msdn.microsoft.com/en-us/library/7tas5c80(v=vs.110).aspx beschreibt, wie Sie ein benutzerdefiniertes Bearbeitungssteuerelement erstellen und es aus der benutzerdefinierten Zelle instanziieren.

+0

danke für dich antwort es ist sehr hilfreich! –