c# - 是否有一种类型的对象,我可以将 Buttons 和 MenuItem 对象都转换到该对象以访问它们的 Tag 属性?

标签 c# .net casting

我想将 MenuItem 对象和 Button 控件对象转换为我可以引用其“Tag”属性的对象类型。

有这样的对象类型吗?

例如

void itemClick(object sender, EventArgs e)
{
    Control c = (Control)sender;
    MethodInvoker method = new MethodInvoker(c.Tag.ToString(), "Execute");
    method.Invoke();
}

除了失败 - “无法将对象类型‘System.Windows.Forms.MenuItem’转换为类型‘System.Windows.Forms.Control’

这个例子中的Control可以用什么代替?

最佳答案

使用“as”运算符。

对象标签;
按钮按钮;
MenuItem menuItem = sender as MenuItem;
如果(菜单项!= null)
{
    tag = menuItem.Tag;
}
else if( (button = sender as Button) != null )
{
    tag = button.Tag;
}
别的
{
   //不是按钮也不是MenuItem
}

关于c# - 是否有一种类型的对象,我可以将 Buttons 和 MenuItem 对象都转换到该对象以访问它们的 Tag 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/322971/

相关文章:

c# - 如何对邮件发送功能进行单元测试

c# - C# 字典中的下一个键

c# - 多维数组中的重复次数

java - 使用通用类型参数转换异常 : Right way to do it?

c# - 哪个是首选 : new Nullable<int> or (int? )null?

c++ - 在 std::set 的定义中将 const_iterator 强制转换为 iterator&

c# - 没有输入值时程序崩溃

c# - .NET 反序列化与 OnDeserializing 和 OnDeserialized

c# - 替换 token 'description' 没有值

.net - 如何检查一个路径是否是另一个路径的子代?