11

これは非常に奇妙です:

私のアプリは問題なく動作しますが、突然 ListView コントロールのイベントが発生しなくなりました。明確な理由もなく、行き来するだけです。(明らかに) AllowDrop プロパティを True に設定し、DragEnter、DragOver、および DragDrop イベントを次のように処理しました。

Private Sub lstApplications_DragDrop(ByVal sender As Object, ByVal e As    System.Windows.Forms.DragEventArgs) Handles lstApplications.DragDrop, Me.DragDrop
    m_fileNames = CType(e.Data.GetData(DataFormats.FileDrop), String())
    mnuType.Show(Cursor.Position, ToolStripDropDownDirection.BelowLeft)
End Sub

Private Sub lstApplications_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles lstApplications.DragEnter, Me.DragEnter, lstApplications.DragOver, Me.DragOver
    If chkMode.Checked OrElse Not e.Data.GetDataPresent(DataFormats.FileDrop, True) Then
        e.Effect = DragDropEffects.None
    Else
        e.Effect = DragDropEffects.Copy
    End If
End Sub

どのイベントも発生しないため、これら 2 つのメソッドでどのようなコードを記述しても問題ありません。ここに欠けているものはありますか?


別のマシンで同じアプリを実行しましたが、問題なく動作しました。その後、自分のマシンを再起動すると、すべてが再び機能し始めました。よくわかりませんが、Windows に何か問題があったようです。

4

7 に答える 7

8

私はちょうど同様の問題で何時間も悲惨でした。ドラッグ アンド ドロップが機能するための 3 つの必須要件:

  1. ターゲットの UI 要素に があることを確認してください。AllowDrop="True"これはアプリ全体では必要なく、有効にしたい要素だけに必要です。
  2. 背景が設定されていない場合、一部の要素は特定のマウス イベント (d&d を含む) を受け取りません。Background="Transparent"しましょう。
  3. 管理者権限でプログラムを実行すると、ドラッグ アンド ドロップが台無しになります。管理者権限なしでVisual Studio を起動してください。
于 2015-05-06T04:12:06.627 に答える
4

Windows7でVisualStudio2008を実行しているときにこの問題が発生しました。VS2008は、Windows 7で管理者権限で実行する必要があるため、別のユーザーとして実行しています。これにより、アプリケーションをアプリとして実行するとアプリケーションが正常に実行されるため、ドラッグ'n'ドロップが機能しなくなると確信していますが、VisualStudioから実行する場合はドラッグ'n'ドロップは機能しません。

于 2009-08-06T10:26:10.693 に答える
3

ずっと前にこれを見たことがあることを思い出しました。

私はそれが次のように起こると信じています:

ドラッグ アンド ドロップ操作中に一部のユーザー コードが例外をスローするまで、ドラッグ アンド ドロップは正常に機能します。

例外は食べられます。エラー ダイアログは表示されません (自分で試してみてください)。この時点以降、ドラッグ アンド ドロップは機能しなくなります。

于 2009-02-17T23:00:41.523 に答える
1

どういうわけか、コントロールの作成が変更されている可能性があります。ハンドルが存在し、初期化コードの完全なセットが実行されたことは確かですか?

私は最近、私が犯した間違いのために Control.OnHandleCreated が実行されていないという同様の問題に遭遇しました.

于 2009-04-24T19:15:40.847 に答える
1

フォーム自体の AllowDrop プロパティが true に設定されていますか?

于 2009-02-17T15:00:55.470 に答える
1

断続的な動作が発生している場合は、例外がハンドラーをエスケープし、ドラッグ ドロップが誤って切断されている可能性があります。コードの周りにブランケット Try/Catch ブロックを追加し、Catch ブロックで Debug.Fail を実行してみてください。これにより、未処理の例外が問題になる可能性が少なくとも排除されます。

于 2009-02-17T15:20:08.497 に答える
0

メソッド ハンドラのスタブを削除して再コンパイルし、元に戻して再度コンパイルしてみましたか? 奇妙に聞こえるかもしれませんが、作業コピーをリセットする必要があったこともあります。

于 2009-02-17T15:12:18.047 に答える