イベントハンドラー内で、C#においてe.Cancelとe.Handledの違いと使い方
C#で、e.Cancelとe.Handledはイベントの実行と伝播を制御するためのイベントパラメーターの2つのプロパティです。
- イベントのキャンセルを示すためのプロパティ、e.Cancel:
- e.Cancel属性は、イベントの実行を停止するために使用されます。e.Cancel属性がtrueに設定されると、イベントはそれ以上実行されません。
- 通常、イベント処理プログラムでは、特定の条件に基づいてイベントの実行をキャンセルする必要があるかどうかを判断し、e.Cancelプロパティを設定してキャンセル機能を実現します。
- サンプルコード:private void ボタン_クリック(object 送信元, EventArgs e)
{
if (一部の条件)
{
e.Cancel = true; // イベントの実行をキャンセル
}
} - e.Handledプロパティ:
- e.Handledプロパティは、イベントの伝播を停止するために使用されます。e.Handledプロパティがtrueに設定されると、イベントは他のイベントハンドラに渡されなくなります。
- 通常、イベント処理プログラムでは、特定の条件に基づいてイベントの伝播を停止するかどうかを判断し、e.Handledプロパティを設定して伝播を停止する機能を実現します。
- 例えば、次のようなコードがあります:private void Button_Click(object sender, EventArgs e)
{
if (someCondition)
{
e.Handled = true; // イベントの伝播を停止
}
}
private void Button_Click2(object sender, EventArgs e)
{
// このイベントハンドラは呼び出されないでしょう、なぜなら前のイベントハンドラがイベントの伝播を停止したからです。
}
まとめ:
- e.Cancel属性は、イベントの実行を停止するために使用され、e.Handled属性は、イベントの伝播を停止するために使用されます。
- 通常、e.Cancelプロパティは、操作のキャンセルに使用されます。たとえば、ウィンドウの閉じるをキャンセルしたり、キーの押下をキャンセルする場合などに使われます。
- e.Handledプロパティの使用は、通常、イベントのバブリングを防ぐために行われます。つまり、他のコントロールやイベントハンドラにイベントの伝播を停止させることを指します。