同じハンドラーにマップされるいくつかのメニュー項目コマンドを含む WinForms アプリがあります。メニュー項目のTag
プロパティを使用して、ハンドラーがどのように動作するかを識別します。
問題は、ハンドラーのsender
パラメーターの型がobject
. Tag
では、オブジェクトのプロパティを読み取るにはどうすればよいでしょうか。
メニュー項目の型に型キャストできることはわかってsender
いますが、ボタンやその他のコントロールを同じハンドラーにマップしたい場合はどうすればよいでしょうか? Tag
送信者であるオブジェクトからプロパティを読み取る一般的な方法はありますか?
これが私がこれまでに持っているものです。うまくいくようです。しかし、もっと合理的な方法はありませんか?
private void Header_Click(object sender, EventArgs e)
{
dynamic ctrl = sender as dynamic;
if (ctrl != null && sender.GetType().GetProperty("Tag") != null)
{
// Go ahead and reference ctrl.Tag
}
}