同じハンドラーにマップされるいくつかのメニュー項目コマンドを含む 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
}
}