【问题标题】:Dynamic Objects动态对象
【发布时间】:2011-03-30 00:51:10
【问题描述】:

只是好奇如何在创建后修改动态变量。

我想,我可以将它们存储到某种列表中。

但我确实为他们分配了名称和事件,并想知道何时触发事件是否可以使用其名称修改项目?(对象发送者)

编辑说明:

在运行时创建新项目并将它们与事件相关联。

Image img = new Image();
img.name = "Image" + someIntValue;
img.MouseDown += new MouseButtonEventHandler(selectedImageClick);
someGrid.Children.add(img);
void selectedImageClick(object sender, MouseButtonEventArgs e)
{
   //Modify that image e.g: border      
}

【问题讨论】:

  • 你能用一个代码示例来澄清你的问题吗?
  • @Tejs,希望这可以澄清事情。

标签: c# .net dynamic


【解决方案1】:

为了修改发件人,您必须强制转换它。您的事件处理程序将如下所示:

void selectedImageClick(object sender, MouseButtonEventArgs e)
{
    Image img = sender as Image;
    if (img != null)  // In case someone calls this event handler with something other than an Image
    {
        //Modify that image e.g: border
    }
}

【讨论】:

  • 谢谢,我想了这么多,反正对象是多种类型的?
  • 好吧,你可以做一些运行时反射来获取对象的类型并检查它是否实现了你试图影响的方法/属性。或者,您可以使用 if/else 的嵌套。第三,这可能是您真正想要的,是您可以测试基本类型。您实际上可能想要影响由 Control 类实现的属性。我会警告将不止一种或两种类型发送到单个事件处理程序,因为它可能会开始变成一团扭曲的条件语句,使将来更难调试。
猜你喜欢
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多