3

DataObject.GetData(typeof(ItemType))メソッドのサブクラスのインスタンスからこのメソッドを呼び出すとItemType、null が返されます... サブタイプからデータを取得するにはどうすればよいですか? ありがとうございました

4

1 に答える 1

7

DataObject の処理では、クラス階層は処理されません。これは、指定されたデータ型の完全な名前から派生した単純な文字列「型」であるため、サブクラスの知識を提供するコンテキストがありません。ツリービューでドラッグアンドドロップを実装するのとまったく同じ問題に遭遇しました。

私には2つのオプションがありました(これらはおそらくドラッグアンドドロップ固有のものです-それが問題でない場合は、あまり使用されない可能性があります)-どちらもデータオブジェクトのソースの変更に依存しています(これも、持っていない場合あまり役に立たないかもしれません)。

  1. インスタンスを取るラッパー クラスを作成し、ItemTypeを呼び出すときDoDragDropに、実際のインスタンスの代わりにそのラッパーを渡します。反対側では、代わりにテストしDataObject.GetData(typeof(WrapperClass))ます。

  2. ここでも、データ オブジェクトが設定されている場所で、DataObject インスタンスを自分で設定します。電話

    ctl.DoDragDrop(new DataObject(typeof(ItemType).FullName, itemTypeInstance),
        DragDropEffects.Move|DragDropEffects.Copy)
    

    DataObject.GetData(typeof(ItemType))次に、反対側で使用できます。

于 2012-02-21T20:14:47.830 に答える