У меня есть форма с текстовым полем на нем. Я создаю объект BindingSource, подключаю к нему мой DomainObject, затем связываю BindingSource с TextBox. Код выглядит примерно так:
private BindingSource bndSource = new BindingSource();
private void Form1_Load(object sender, EventArgs e) {
bndProposal.DataSource = new DomainObject() { ClientCode = "123", EdiCode = "456" };
txtAgencyClientCode.DataBindings.Add("Text", bndProposal, "ClientCode",
false, DataSourceUpdateMode.OnPropertyChanged, null);
}
private void txtAgencyClientCode_TextChanged(object sender, EventArgs e)
{
Debug.WriteLine("txtAgencyClientCode_TextChanged");
}
public class DomainObject
{
public string ClientCode { get; set; }
public string EdiCode { get; set; }
}
Код работает нормально. Однако я хотел бы знать причину, по которой происходит событие TextChanged: это происходит потому, что оно устанавливается BindingSource, или потому, что пользователь что-то ввел (или вставил). Как мне получить эту информацию?
Я пытался установить флаг, который устанавливается при создании привязок, но во время привязки текстовое поле находится на элементе управления с вкладками, который не отображается. Событие фактически срабатывает, когда я переключаюсь на вкладку с соответствующим текстовым полем.