2011-03-29 78 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