Eine Methode kann nicht sagen, wer sie aufgerufen hat. Aber hier haben Sie ein sender
Argument. Wenn die Methode von einem Benutzer aufgerufen wird klicken, wird der Absender die ToggleButton
der Benutzer geklickt. Wenn Sie diese Methode im Code aufrufen, übergeben Sie etwas anderes. Z.B. das Objekt, das den Anruf macht:
// Call in code
ToggleButton_Checked(this, e);
In ToggleButton_Checked
:
if (sender is ToggleButton) {
// User click
} else {
// Called from code
}
Hinweis: Wenn Sie ToggleButton_Checked
anrufen, Sie sind alle Ereignisse nicht abfeuern, sind Sie nur einen Event-Handler aufrufen.
Ich denke, das Problem, das Sie haben könnten (man kann es nicht erklären haben) ist, dass Sie die Checked
Eigentum Ihrer Kontrolle ändern sich, aber nicht wollen, dass der Event-Handler in diesem Fall ausgelöst werden.
Sie können dies erreichen, indem er eine Wache mit
private bool _changing; // Field
-Code die Änderung tun:
_changing = true;
try {
myToggleButton.Checked = someNewValue;
} finally {
_changing = false;
}
im Ereignishandler ToggleButton_Checked
, anbei erhalten Sie Ihren Code mit
if (!_changing) {
// Your code handler stuff.
}
Sie meinen, wie sie dem Benutzer gegen die ‚Spacebar‘ drücken? Oder von anderem Code innerhalb Ihrer Klasse? –
Worauf zielen Sie ab: Winforms, WPF, ASP ..? __Always__ tag Ihre Frage richtig! – TaW
Warum müssen Sie wissen; Wie wird sich das ändern, was du tun wirst? – Servy