2013-03-07 65 views
0

我有一個問題,比較我從一個事件參數獲得的數據,更具體地說,我有2個類使用接口,讓我們稱之爲'IInt'。我也有一個充滿了這兩個類的對象的列表。提取和比較eventargs數據

我目前使用OnDragDrop事件從這個列表中拖動對象,但我需要一種方法來確定它是否是我繪製的class1或class2的對象。有沒有辦法提取數據並使用DragEventArgs drgevent進行比較?

首先,當我從列表中抓取一個對象時。

foreach (IInt d in dlist) 
    DoDragDrop(d.GetType(), DragDropEffects.Move); 

而當我想提取數據,即檢查什麼對象被拖動。

protected override void OnDragDrop(DragEventArgs drgevent) 
    { 
     if (drgevent.GetType() == typeof(DragedObject)) 
      do stuff... 
    } 

回答

2

終於等到這根之後,我們發現您的答案是here

if (e.Data.GetDataPresent(typeof(YourType))) { 
    YourType item = (YourType)e.Data.GetData(typeof(YourType)); 

如果我理解正確,那麼你正在尋找reflection

您可以使用GetType

arg.GetType() == typeof(Class1) 

is

arg is Class1 

UPDATE

沒有比提供更多的代碼,這裏是這聽起來像你需要做的:

foreach (IInt d in dlist) 
    DoDragDrop(d, DragDropEffects.Move); 

DoDragDrop聽起來像它會創建從該DragEventArgs對象和效果,所以你會想這樣的事情:

protected override void OnDragDrop(DragEventArgs drgevent) 
{ 
    if (drgevent.dObject.GetType() == typeof(DraggedObject)) 
     do stuff... 
} 

請注意,您並未測試arg本身,而是測試它包含的內容。

+0

Doesen't似乎工作,在我的DoDragDrop我從列表發送的內容的類型,像這樣: 的DoDragDrop(obj.GetType(),DragDropEffect.Move)(其中obj是一個foreach裏面裁判變量循環遍歷整個列表) – Jacco 2013-03-07 18:45:48

+0

您應該可能上傳示例代碼段。如果你的DoDragDrop需要一個類型,那麼這是正確的,但是如果它期望一個你將測試類型的對象,那麼它是錯誤的。 – 2013-03-07 18:50:39

+0

確實,編輯過的操作使其更加清楚我想實現的目標。 – Jacco 2013-03-07 19:12:05