2011-03-29 80 views
0

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

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

但我为它们分配一个名称和事件,想知道什么时候该事件被触发,将有可能与它的名字(对象发件人)修改的项目

编辑澄清:

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

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  
} 
+3

你可以澄清你的问题,也许代码示例? – Tejs 2011-03-29 16:29:53

+0

@Tejs,希望澄清事情。 – 2011-03-29 16:49:02

回答

2

为了修改发送方,你必须投它。你的事件处理程序会看起来像这样:

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 
    } 
} 
+0

谢谢,无论如何,我认为对象是多种类型? – 2011-03-29 16:54:40

+1

那么,你可以做一些运行时反射来获取对象的类型,并检查它是否实现了你试图影响的方法/属性。或者,您可以使用if/else的嵌套。第三,这可能是你真正想要的,就是你可以测试一个基类型。您可能实际上想要影响由Control类实现的属性。我会告诫将一个或两个以上的类型发送给一个事件处理程序,因为它可能会开始变成混乱的条件语句,使得它在将来更难调试。 – drovani 2011-03-29 22:08:51

+0

很酷,我会记住这一点。 – 2011-03-30 14:34:09