すべてのコントロールで同じコードを使用するために、「panelDown」オブジェクトを取得する簡単な方法はありますか?
private void panelDown_MouseHover(オブジェクト送信者, EventArgs e) { **panelDown**.BorderStyle = BorderStyle.FixedSingle; }
ニコが提案した方法で使用するのではなくas
、次のようにキャストします。
private void panelDown_MouseHover(object sender, EventArgs e)
{
var panel = (Panel) sender;
panel.BorderStyle = BorderStyle.FixedSingle;
}
無条件に を変換する場合、間違った型を取得したかのようにキャストを使用することをお勧めします。間違った入力で an の結果を使用する場合にスローされる例外 ( ClassCastException
) は、 a を取得するよりもはるかに明確です。NullReferenceException
as
(もちろん、ここで 2 つのステートメントを使用する必要はありません。そのほうがわかりやすいと思います。)
入力が異なるタイプであることが有効なas
場合に使用し、正しいタイプである場合は条件付きでアクションを実行します。
イベント ハンドラーを手動で接続している場合は、もちろん、ラムダ式を使用する代わりに関連する変数を取得できます。
foo.MouseHover += (sender, args) => foo.BorderStyle = BorderStyle.FixedSingle;
または:
foo.MouseHover += delegate { foo.BorderStyle = BorderStyle.FixedSingle };
Control にキャストsender
します (Panel の場合もあります)。
((Panel) sender).BorderStyle = BorderStyle.FixedSingle;
private void panelDown_MouseHover(object sender, EventArgs e)
{
(sender as Panel).BorderStyle = BorderStyle.FixedSingle;
}