マルチドキュメントエディターとして機能する基本的なwinforms MDIアプリケーションがあります。
何が機能していますか
- ドキュメントが開かれていない状態で、ファイルをエクスプローラーからクライアント領域にドラッグすると、コンテナーのドラッグ ドロップ イベントが期待どおりに発生します。
- ドラッグ ドロップをサポートしていないドキュメントが開いている場合、ファイルをエクスプローラからドキュメントにドラッグすると、コンテナのドラッグ ドロップ イベントも発生します。
機能していないもの
- ドラッグ ドロップをサポートするドキュメントを開いている場合、ファイルがドラッグされるとドラッグ ドロップ イベントが発生します。ドキュメントがドラッグを使用するため、これは予期されることであり、必須です。ただし、一部のデータ型 (特にファイルがドラッグされたとき) については、親に処理してもらいたいと思っています。
基本的に、ドラッグドロップイベントを親コンテナに選択的に延期する方法が必要です。
基本的なサンプル アプリは、ここからダウンロードできます。
https://www.dropbox.com/sh/0iefczgq6bqmgwg/7F-SfeJLBL/Code/DragDropTest.zip
本来やりたいことは
private void EditorControl_DragEnter(object sender, DragEventArgs e)
{
Debug.WriteLine(this.Name + " DragEnter");
// if we know about the data being dragged
if (e.Data.GetDataPresent("MyData"))
{
// control specific drag handler
}
else
{
// we don't know how to deal with the drop data so
// pass the event to the parent form/control
this.ParentForm.FireDragEnter();
}
}
何かご意見は?