C# 提取并比较eventargs数据

C# 提取并比较eventargs数据,c#,windows,winforms,forms,C#,Windows,Winforms,Forms,我在比较从eventargument获得的数据时遇到了一个问题,更具体地说,我有两个使用接口的类,我们称之为“IInt”。我还有一个列表,其中填充了这两个类的对象 我目前使用OnDragDrop事件从这个列表中拖动对象,但是我需要一种方法来确定我拖动的对象是class1还是class2。是否有方法提取数据并使用DragEventArgs drgevent进行比较 首先,当我从列表中抓取一个对象时 foreach (IInt d in dlist) DoDragDrop(d.GetType

我在比较从eventargument获得的数据时遇到了一个问题,更具体地说,我有两个使用接口的类,我们称之为“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...
    }

在最终找到问题的根源之后,你的答案似乎是

如果我对你的理解是正确的,那么你就是在寻找

你可以用

更新

如果没有提供更多的代码,您需要执行以下操作:

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

在最终找到这个问题的根源之后,您的答案似乎是

如果我对你的理解是正确的,那么你就是在寻找

你可以用

更新

如果没有提供更多的代码,您需要执行以下操作:

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

似乎不起作用,在我的DoDragDrop上,我从列表中发送项目的类型,如下所示:DoDragDrop(obj.GetType(),DragDropEffect.Move)(其中obj是遍历整个列表的foreach循环中的ref变量)您可能应该上传一个示例代码段。如果您的DoDragDrop需要一个类型,则这是正确的,但如果它需要一个您将测试该类型的对象,则这是错误的。是的,请编辑op以更清楚地说明我想要实现的目标。@Jacco这仍然没有帮助。缺少完整的故事……似乎您希望将
d
传递到
DoDragDrop
而不是它的类型。但是,我不知道这一切是如何发展到Arg水平的……我对这方面还相当陌生,所以我的尝试可能完全失败了,idk。。但希望我想要实现的是足够清楚的,从列表中发送一些内容,稍后再获取它的类型。我不知道我还能怎么解释它,我所知道的只是我尝试过的东西暂时不起作用。似乎不起作用,在我的DoDragDrop上,我从列表中发送项目的类型如下:DoDragDrop(obj.GetType(),DragDropEffect.Move)(其中obj是遍历整个列表的foreach循环中的ref变量)您可能应该上传一个示例代码段。如果您的DoDragDrop需要一个类型,则这是正确的,但如果它需要一个您将测试该类型的对象,则这是错误的。是的,请编辑op以更清楚地说明我想要实现的目标。@Jacco这仍然没有帮助。缺少完整的故事……似乎您希望将
d
传递到
DoDragDrop
而不是它的类型。但是,我不知道这一切是如何发展到Arg水平的……我对这方面还相当陌生,所以我的尝试可能完全失败了,idk。。但希望我想要实现的是足够清楚的,从列表中发送一些内容,稍后再获取它的类型。我不知道还能怎么解释,我只知道我试过的东西暂时不起作用。
protected override void OnDragDrop(DragEventArgs drgevent)
{
    if (drgevent.dObject.GetType() == typeof(DraggedObject))
        do stuff...
}