提取并比较eventargs数据

时间:2013-03-07 17:58:44

标签: c# windows winforms forms

我在比较从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...
    }

1 个答案:

答案 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本身,而是测试它包含的内容。