質問: 単純な質問ですみません...検索しても出てこなかったのでこちらで質問させていただきます。 C#でWinFormアプリを作成してます。 Form上には2つのコントロールがあってコントロールAからDragしてコントロールBにDropができるように設定しています。 一般的な方法でDrag&Dropを設定しているので詳しいコードは割愛させていただきますが問題なくDrag&Dropができています。 ですが、コントロールAからDragを開始して、コントロールBにDropしなかった場合に失敗イベントをどこで発生させればよいかわかりません。 例えばコントロールAからDragを開始して、 ・コントロールBではなくForm上でマウスボタンを離した場合 ・まったく別のコントロール上でマウスボタンを離した場合 ・Formの外でマウスボタンを離した場合 などいろいろなところでDropしないでマウスボタンを離してDrapを解除した場合のイベントをどこに設定すれば良いのかわからないです。 Dragイベントは、 DranDrop →Drop先Dropした場合 DragEnter →Drop先にEnterした場合 DragLeave →Drop先からLeaveした場合 DragOver →Drop先でOverしている場合 しかありません。 コントロールAのMouseUpでもないですし、Formや他の様々なコントロール上でMouseUpイベントを設定するのも非常に大変です。 このような場合はどのような処理になるのでしょうか? ちなみにDrop失敗後のイベントは通常必要ないと思いますが、作っているアプリでは必要となっています。 お手数ですがどうぞよろしくお願い致します。 開発環境: Windows10 + VisualStudio2015 C#
回答: DoDragDropの戻り知で取得できませんか? ``` var result = this.DoDragDrop(...); if( result == DragDropEffects.None ){ MessageBox.Show("failed"); } ```