2017-07-13 11 views
-1

私は、この関数の宣言をしたと仮定:ユーザーがクリックしてイベントが発生したかどうかを確認しますか?

private void ToggleButton_Checked(object sender, System.Windows.RoutedEventArgs e) 

この機能は、ユーザーのクリックからと他の機能から自分のコード内で焼成することができます。 この機能がユーザーのクリックにより起動されたときにチェックします。

+0

あなたはどういう意味ですか?またはあなたのクラス内の他のコードからですか? –

+1

対象とするもの:Winforms、WPF、ASP ..? __Always__あなたの質問に正しくタグを付けてください! – TaW

+0

なぜ知る必要がありますか?あなたは何をやろうとしているのですか? – Servy

答えて

0

メソッドは誰がそれを呼び出したかを知ることはできません。しかし、ここには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. 
} 
+0

しかし、ユーザコードの結果としてメソッドが呼び出された場合についての質問はしません。ユーザーコードの結果としてイベントが発生します。つまり、送信者は依然としてボタンになります。OP *がイベントを発生させるのではなく、メソッドを呼び出すのであれば、解決方法は、実行時の型が(オブジェクトの)オブジェクトではなく、チェックしています)。 – Servy

+0

別のクラスのイベントを発射することは可能ですか?私は外部から 'TogleButton'のイベントを発生させることはできないと思います。外部から 'Checked'プロパティを設定することができます。 –

+0

明示的ではありません。そのクラスがイベントを発生させるようなアクションを実行できます(つまり、 'Checked'イベントの場合はチェックします)。 – Servy

1

でコードを囲み、

_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); 
関連する問題