0

我在比较从事件参数获得的数据时遇到问题,更具体地说,我有 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...
    }
4

1 回答 1

3

在终于找到了这个问题的根源之后,您的答案似乎就在这里

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

如果我对您的理解正确,那么您正在寻找反思

您可以使用GetType

arg.GetType() == typeof(Class1)

或者

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

于 2013-03-07T18:00:26.790 回答