J'ai un tas de contrôles sur un formulaire et tous leurs événements de «changement» pointent vers le même gestionnaire d'événements. Certains d'entre eux sont TextChanged de txtInput1, de chkOption1 CheckedChanged et de cmbStuff1 SelectedIndexChanged. Voici le gestionnaire d'événements:Comment puis-je déterminer si un événement a été déclenché par une action utilisateur ou par un code?
private void UpdatePreview(object sender, EventArgs e)
{
// TODO: Only proceed if event was fired due to a user's clicking/typing, not a programmatical set
if (sender.IsSomethingThatTheUserDid) // .IsSomethingThatTheUserDid doesn't work
{
txtPreview.Text = "The user has changed one of the options!";
}
}
Je voudrais l'instruction if pour exécuter uniquement lorsqu'un utilisateur modifie le texte de texte ou clique sur une case à cocher ou autre. Je ne veux pas que cela se produise si le texte ou la case à cocher a été modifié par une autre partie du programme.
Je pourrais jurer que je viens de répondre à une question exactement comme ça récemment ... –
La voici. Ce n'est pas exactement un doublon complet, mais la réponse est toujours la même: http://stackoverflow.com/questions/3071811/listbox-selectedindexchanged-can-you-determine-if-it-was-user-intiated/3071856 –
Can vous clarifiez ce que vous voulez dire lorsque vous dites "Je ne veux pas que cela se produise si le texte ou la case à cocher a été modifié par une autre partie du programme". – Doug