TextChanged envoie une notification pour chaque pression de touche dans le contrôle TextBox.Quel événement utiliser pour un contrôle TextBox pour signaler un changement de texte en appuyant sur Entrée?
Dois-je utiliser l'événement KeyDown?
TextChanged envoie une notification pour chaque pression de touche dans le contrôle TextBox.Quel événement utiliser pour un contrôle TextBox pour signaler un changement de texte en appuyant sur Entrée?
Dois-je utiliser l'événement KeyDown?
Le meilleur événement pour gérer ici est KeyDown. KeyDown se déclenche lorsque l'utilisateur saisit explicitement dans la boîte ou d'autres composants simule la frappe des utilisateurs en envoyant des messages au TextBox
. Cela correspond au scénario que vous avez décrit.
Si par contre vous choisissez de répondre à l'événement TextChanged, vous répondrez à chaque fois que le texte est modifié (par l'utilisateur ou par le code). Cela signifie que votre événement sera déclenché si je dis explicitement
someBox.Text = Environment.NewLine;
Eh oui, en cas keydown:
if (e.KeyCode == Keys.Enter)
{
// do stuff
}
L'événement KeyPress fonctionne pour cela:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter)
{
MessageBox.Show("Enter pressed!");
}
}
Cela dépend du reste de votre formulaire. Lorsque vous avez un bouton Accepter, [Enter] dans (presque) n'importe quel contrôle déclenchera ce bouton et il serait préférable de ne pas le manipuler séparément dans les Textbox. Inversement, si vous voulez gérer une ou plusieurs boîtes de texte, n'utilisez pas un bouton Accepter.
Winforms ... winforms. –
winforms ... pas webforms ... – CSharpAtl
Désolé, regardé la question et raté le tag winforms. Il y a aussi un événement textchanged dans ASP.NET ...: - S – Achilles