Witam.
Bawię się DataBinding w WinFormsach.
Niby działa ale... nie wiem jak.
Na formie mam:
ListBox - listBox1
ComboBox - comboBox1
TextBox - tbName
I taki kod:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
List<Person> person = new List<Person>()
{
new Person("John", "Nowak", 30, "accountant", Color.Red, new Font("Meiryo UI", 7.6f)),
new Person("Jeremy", "Kowalski", 20, "policeman", Color.Beige, new Font("Magneto", 8)),
new Person("Clara", "Wiśniewska", 40, "programmer", Color.Blue, new Font("Mistral", 9)),
new Person("Mey", "Kwiatkowska", 50, "unemployed", Color.DarkGray, new Font("Monotype Corsiva", 10.5f))
};
listBox1.DataSource = person;
listBox1.DisplayMember = "NameSurname";
comboBox1.DataSource = person;
comboBox1.DisplayMember = "NameSurname";
tbName.DataBindings.Add(new Binding("Text", person, "Name"));
tbName.DataBindings.Add(new Binding("Font", person, "Font"));
}
}
class Person
{
public Person(string name, string surname, int age, string job, Color color, Font font)
{
Name = name;
Surname = surname;
Age = age;
Job = job;
Color = color;
Font = font;
}
private string _name;
private string _surname;
private int _age;
private string _job;
private Color _color;
private Font _font;
public Font Font
{
get { return _font; }
set { _font = value; }
}
public Color Color
{
get { return _color; }
set { _color = value; }
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public string Surname
{
get { return _surname; }
set { _surname = value; }
}
public int Age
{
get { return _age; }
set { _age = value; }
}
public string Job
{
get { return _job; }
set { _job = value; }
}
public string NameSurname
{
get { return _name + " " + _surname; }
}
}
Po wybraniu jakiegoś elementu na liście, ten sam element wybierany jest w combo, tbName wypełniany jest odpowiednią wartością i ustawiana jest odpowiednia czcionka.
I tu pojawia się pytanie jak to działa skoro bindowanie ustawione jest na liście a nie na kontrolce.
Skąd lista "wie" jaki element został wybrany w combo (nie ma chyba żadnej właściwości typu "selectedItem") i w jaki sposób "informuje" o tym zbindowane elementy?
Grzegorz Świdwa