2011-05-04 50 views
1

兩個不同的滑塊控件在下面觸發這個功能,它們的名字是seektomediaposition和seektomediaposition2。如何從對象發件人中提取屬性值?

public void seektomediaposition_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
    { 

string name = Convert.ToString(e.Source.GetType().GetProperty("Name"));//wont return what i need. 
MessageBox.Show(name); 
if(name=="seektomediaposition") 
    // whatever is the code 
if(name=="seektomediaposition2") 
    // whatever is the code 

    } 

e.Source.GetType()將返回類型Slider。 (「Name」)將返回「Name」而不是「seektomediaposition」或任何將事件引發到此函數的控件名稱。返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首返回頁首

我怎樣才能得到該消息箱上顯示的名稱,以便我可以根據這個決定?

回答

2

GetProperty()返回一個PropertyInfo對象。有了這個,你可以調用GetValue(e.Source,null)。

public void seektomediaposition_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) 
    { 

string name = Convert.ToString(e.Source.GetType().GetProperty("Name").GetValue(e.Source, null)); 
MessageBox.Show(name); 
if(name=="seektomediaposition") 
    // whatever is the code 
if(name=="seektomediaposition2") 
    // whatever is the code 

    } 
+0

_PropertyInfo T1 = e.Source.GetType()的getProperty( 「值」); t1.GetValue(e.Source,null)你是對的,我可以訪問任何屬性,我只是發現,我真正需要的是價值而不是名稱。非常感謝 – user722886 2011-05-04 17:44:47

+0

不客氣。很高興它的工作。 – Tom 2011-05-04 18:16:22

1

你的功能 「seektomediaposition_ValueChanged(對象發件人,RoutedPropertyChangedEventArgs E)」 的目的發件人。

所以在這裏,你可以說
如果(發件人== seektomediaposition) 做到這一點 否則,如果(發件人== seektomediaposition2) 做其他事情

+0

如果您事先知道滑塊將是什麼,這是比我更好的解決方案。如果您需要獲取可能添加到頁面的任何滑塊的名稱以觸發此事件,則需要更多類似於我的解決方案的內容。 – Tom 2011-05-04 17:11:44

+0

我試過後,你發佈但是有一個錯誤。無法將雙重轉換爲對象。也許我完全不瞭解這個想法,如果是這樣的話,我仍然不得不將湯姆的答案應用於這種比較。無論如何,感謝問題解決。 – user722886 2011-05-04 17:51:37

相關問題