Очень часто сам забываю, что и WinForms с привязкой данных дружит, пусть и очень скудны средства, но определённые вещи без наворотов WPF тоже можно сделать.
C# | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| public Form1()
{
InitializeComponent();
// инициализируем коллекцию
ListData = new BindingList<MyData>();
}
/// <summary>
/// Коллекция значений для источника данных
/// </summary>
public BindingList<MyData> ListData { get; private set; }
private void Form1_Load(object sender, EventArgs e)
{
// текстовое поле
TextBox tbEdit = new TextBox()
{
Dock = DockStyle.Bottom
};
// список
ListBox lbList = new ListBox()
{
Dock = DockStyle.Fill,
DisplayMember = "Value"
};
// Источник привязки данных
BindingSource bs = new BindingSource(this, "ListData");
for (int i = 0; i < 10; i++)
ListData.Add(new MyData() { Value = "Значение " + i });
// задаём источник привязки в качестве источника данных для списка
lbList.DataSource = bs;
// связываем свойство Text у текстового поля со свойством Value (класс MyData)
// DataSourceUpdateMode.OnPropertyChanged - моментальная реакция на изменение значения в текстовом поле
tbEdit.DataBindings.Add("Text", bs, "Value", false, DataSourceUpdateMode.OnPropertyChanged);
// кладём контролы на форму
Controls.AddRange(new Control[] { lbList, tbEdit });
}
public class MyData
{
public string Value { get; set; }
} |
|
На событие загрузки формы не забываем подписаться. |