我在比较从eventargument获得的数据时遇到了问题,更具体地说,我有2个使用接口的类,我们称之为'IInt'。我还有一个列表,里面填充了这两个类的对象。
我目前使用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...
}
答案 0 :(得分:3)
在最终找到根源后,您的答案似乎是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
<强>更新强>
如果没有比提供的更多的代码,这就是您需要做的事情:
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本身,而是测试它包含的内容。