0

イベント引数から取得したデータを比較する際に問題があります。具体的には、インターフェイスを使用する 2 つのクラスがあり、「IInt」と呼びます。これら 2 つのクラスのオブジェクトで満たされたリストもあります。

現在、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...
}

引数自体をテストするのではなく、その内容をテストしていることに注意してください。

于 2013-03-07T18:00:26.790 に答える