2016-07-25 4 views
0

Ich möchte einen Container mit Objekten haben, die in WinForms 'DataGridView Steuerelement angezeigt werden.So binden Sie Container von benutzerdefinierten Objekten zur Entwurfszeit

Soweit ich weiß, kann ich einen Container an DataGridView über die DataSource Eigenschaft binden.

Aber ich frage mich, gibt es eine Möglichkeit, es in Designer zu tun? Ich sehe eine Menge Optionen im Zusammenhang damit (wie , DataMember etc), aber ich sehe keine Option, die mir eine Möglichkeit geben wird, meinen eigenen Container innerhalb der Form Klasse zu wählen.

Ich möchte diese Art von Sachen nicht programmgesteuert machen, wenn es im Designer verfügbar ist.

Antwort

1

DataSource ist im Designer bindbar. Sie können den kleinen Pfeil am oberen Rand von DataGridView drücken und Datenquelle auswählen. Am Boden> Project Datasource ...

enter image description here

Nach der Klasse hinzufügen, dass Ihre Datasource enthält, Sie können festlegen, im Fenster Eigenschaften, die öffentliche Eigentum ist Ihre Datasource.

Zum Beispiel:

public class ThereIsDataSourceInThisClass 
{ 
    public ThereIsDataSourceInThisClass() 
    { 
     MyDataSource = new BindingList<Thing>(); 
     MyDataSource.Add(new Thing { First = "aa", Second = "bb" }); 
    } 

    public BindingList<Thing> MyDataSource { get; set; } 

    public class Thing 
    { 
     public string First { get; set; } 
     public string Second { get; set; } 
    } 
} 

ich ausgewählt ThereIsDataSourceInThisClass im Assistenten, als ich MyDataSource in der Datasource-Eigenschaft ausgewählt.

Das Ergebnis ist>

enter image description here

+0

So 'BindingList' sollte eine Eigenschaft der Klasse sein, die eine' DataSource' dieses 'DataGridView' ist? Kann ich diese 'BindingList' stattdessen in der' Form' Klasse platzieren? – FrozenHeart

+0

Sie sollten nicht. Beim Binden geht es darum, die View vom Model/ViewModel zu trennen. – ntohl

+0

Wenn Sie 'Form' im Assistenten wählen, funktioniert das genauso. Just checked – ntohl

Verwandte Themen