ich Databinding in WinForm gefunden haben:C# Windows Form Databinding
BindingSource bs = new BindingSource();
test t = new test();
t.Foo = "Ahmet";
bs.DataSource = t;
label1.DataBindings.Add(new Binding("Text", bs, "Foo", false, DataSourceUpdateMode.OnPropertyChanged));
das funktioniert, aber ich brauche komplexere Datenbindung. Ich habe Area, Desk-Klassen. Ich bekomme Daten von db und erstelle List-Objekt. Alle Bereiche haben viele Schreibtische.
Ich habe versucht, folgen, aber es funktioniert nicht.Button Text ist null. Wie kann ich Datenbindung verwenden?
BindingSource bs = new BindingSource();
foreach (Area area in areaList)
{
Button btn = new Button();
btn.AutoSize = false;
btn.Width = 100;
btn.BringToFront();
btn.Height = 35;
btn.Font= new Font("Arial", 16, FontStyle.Bold);
btn.BackColor = Color.White;
btn.FlatStyle = FlatStyle.Flat;
btn.TextAlign = ContentAlignment.MiddleCenter;
btn.Margin = new Padding(3,5,3,5);
btn.DataBindings.Add(new Binding("Text", bs,"Name",false, DataSourceUpdateMode.OnPropertyChanged));
btn.Click += new EventHandler(btnAreaClick);
fpnlAreas.Controls.Add(btn);
}
Gebiet Klasse
public class Area : INotifyPropertyChanged
{
private string _id;
private string _name;
private List<Table> _table;
public event PropertyChangedEventHandler PropertyChanged;
public List<Table> ListOfTable
{
get { return _table; }
set { _table = value;
OnPropertyChanged("ListOfTable");
}
}
public string Name
{
get { return _name; }
set { _name = value;
OnPropertyChanged("Name");
}
}
public string Id
{
get { return _id; }
set { _id = value;
OnPropertyChanged("Id");
}
}
public Area()
{
ListOfTable = new List<Entity.Table>();
}
protected virtual void OnPropertyChanged(string Property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(Property));
}
}
}
Schreibtisch Klasse
public class Table
{
private string _id;
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public string Id
{
get { return _id; }
set { _id = value; }
}
public Table()
{
ListOfBill = new List<Bill>();
}
}