Ich habe nächste Ausgabe, ich arbeite an kleinen C# -WPF-Anwendung, und beim Laden bin ich deaktivieren Schaltfläche, die Ussualy verwendet wird, um einige Aktion auf klicken, und es sieht dies wie:C# Wenn Button IsEnabled, sein auslösendes Ereignis bei Klick
public MainWindow()
{
InitializeComponent();
this.WindowStartupLocation = WindowStartupLocation.CenterScreen;
if (String.IsNullOrEmpty(password.Password))
{
btnActivate.IsEnabled=false;
}
}
und irgendwo ich mein Passwort Feld bin Überprüfung, zum Beispiel:
private void password_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key.Equals(Key.Enter))
{
if (password.Password == "drag0n")
{
btnActivate.IsEnabled = true;
}
else
{
btnActivate.IsEnabled = false;
}
}
}
und mein Problem ist, als nächstes, wenn Benutzer "drag0n"
eingeben und drücken Sie die Eingabetaste, Taste nur aktiviert werden soll, aber es ist nicht nur aktiviert, seine automatische Ruffunktion ist seine Ereignis _Click
, ich weiß nicht, warum das passiert, denn in diesem Fall, wenn meine Schaltfläche gerade aktiviert ist Ereignis _Click
wird auch aufgerufen, und wenn Benutzer auf diese Schaltfläche klickt, wird Ereignis erneut aufgerufen, so tatsächlich mein Ereignis onclick
aufgerufen wird zweimal.
Meine Frage ist, wie kann ich aufhören, mein Click-Ereignis aufzurufen, wenn ich IsEnabled=true
setze. Wenn ich IsEnabled=true
setze, möchte ich nur, dass es zum Drücken aktiviert ist und ich möchte das Ereignis _Click
nicht ausführen. Ich möchte Ereignis _Click
nur ausführen, wenn meine Taste gedrückt wird, wie es funktionieren sollte und nicht auf IsEnabled=true
.
Danke Jungs, Beifall
die als Standard markiert Taste? Wenn dies der Fall ist, wird das Click-Ereignis möglicherweise aufgrund der gedrückten Eingabetaste automatisch ausgelöst. Versuchen Sie, die Eigenschaft 'IsDefault' der Schaltfläche auf 'false' zu setzen. Oder wenn Sie nicht möchten, können Sie "e.Handled" auf "true" setzen, wenn Sie die Schaltfläche auf "enabled" setzen, damit das KeyEvent nicht weiter aufblubbert. – GregaMohorko