私は、この関数の宣言をしたと仮定:ユーザーがクリックしてイベントが発生したかどうかを確認しますか?
private void ToggleButton_Checked(object sender, System.Windows.RoutedEventArgs e)
この機能は、ユーザーのクリックからと他の機能から自分のコード内で焼成することができます。 この機能がユーザーのクリックにより起動されたときにチェックします。
私は、この関数の宣言をしたと仮定:ユーザーがクリックしてイベントが発生したかどうかを確認しますか?
private void ToggleButton_Checked(object sender, System.Windows.RoutedEventArgs e)
この機能は、ユーザーのクリックからと他の機能から自分のコード内で焼成することができます。 この機能がユーザーのクリックにより起動されたときにチェックします。
メソッドは誰がそれを呼び出したかを知ることはできません。しかし、ここにはsender
という引数があります。メソッドがユーザーのクリックによって呼び出されると、送信者はユーザーがクリックしたToggleButton
となります。コードでこのメソッドを呼び出す場合は、別のものを渡します。例えば。呼び出しを行うオブジェクト:
// Call in code
ToggleButton_Checked(this, e);
ToggleButton_Checked
で:
if (sender is ToggleButton) {
// User click
} else {
// Called from code
}
注:ToggleButton_Checked
を呼び出している場合には、すべてのイベントを発射していない、あなただけのイベントハンドラを呼び出しています。
私はあなたが持つかもしれない問題は、(あなたがそれを説明しなかった)あなたがコントロールのChecked
プロパティを変更しているということだと思いますが、イベントハンドラは、この場合にトリガーされないようにします。
変更を行う
private bool _changing; // Field
コードガードを使用することによって、これを達成することができますすることができます
if (!_changing) {
// Your code handler stuff.
}
しかし、ユーザコードの結果としてメソッドが呼び出された場合についての質問はしません。ユーザーコードの結果としてイベントが発生します。つまり、送信者は依然としてボタンになります。OP *がイベントを発生させるのではなく、メソッドを呼び出すのであれば、解決方法は、実行時の型が(オブジェクトの)オブジェクトではなく、チェックしています)。 – Servy
別のクラスのイベントを発射することは可能ですか?私は外部から 'TogleButton'のイベントを発生させることはできないと思います。外部から 'Checked'プロパティを設定することができます。 –
明示的ではありません。そのクラスがイベントを発生させるようなアクションを実行できます(つまり、 'Checked'イベントの場合はチェックします)。 – Servy
でコードを囲み、
_changing = true;
try {
myToggleButton.Checked = someNewValue;
} finally {
_changing = false;
}
は、イベントハンドラToggleButton_Checked
で単にあなたの質問の必要性を取り除きます。ユーザーコード。
イベントハンドラは、イベントを処理するために存在します。だから、独自のメソッドにイベントからロジックを抽出します。
private void ToggleButton_Checked(object sender, System.Windows.RoutedEventArgs e)
{
DoTheThing(userInitiated: true);
}
private void DoTheThing(bool userInitiated)
{
if (userInitiated)
{
// ...
}
else
{
// ...
}
}
そして、あなたがコードから同じメソッドを呼び出すことができます:「スペースキー」を押すと、ユーザとは対照的に、
DoTheThing(userInitiated: false);
あなたはどういう意味ですか?またはあなたのクラス内の他のコードからですか? –
対象とするもの:Winforms、WPF、ASP ..? __Always__あなたの質問に正しくタグを付けてください! – TaW
なぜ知る必要がありますか?あなたは何をやろうとしているのですか? – Servy