J'ai un formulaire avec une zone de texte dessus. Je crée un objet BindingSource, connecte mon objet DomainObject, puis lie BindingSource à un TextBox. Le code ressemble à ceci:Comment puis-je savoir quand la liaison définit la zone de texte par rapport à l'utilisateur?
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; }
}
Le code fonctionne bien. Cependant, j'aimerais connaître la raison pour laquelle l'événement TextChanged se déclenche: est-ce parce qu'il est défini par BindingSource ou est-ce parce que l'utilisateur a saisi quelque chose (ou l'a collé). Comment puis-je obtenir cette information?
J'ai essayé d'avoir un drapeau qui est défini lors de la création des liaisons, mais au moment de la liaison, la zone de texte est sur un contrôle de tabulation qui n'est pas visible. L'événement se déclenche lorsque je passe à l'onglet avec la zone de texte en question.