Announcement

Collapse
No announcement yet.

WPF: Window.DragEnter wird nicht gefeuert

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • WPF: Window.DragEnter wird nicht gefeuert

    Hallo zusammen,

    ich habe ein Problem mit meinem WPF Fenster. Ich muss einige Dinge aus einem anderen Fenster per Drag&Drop in mein Fenster ziehen. Dabei muss ich prüfen, ob ich auch wirklich in dem, zuletzt aktiven Fenster bin. Den Namen des aktiven Fensters speichere ich in einer Variablen des MainWindows.
    Gedroppt werden soll auf ein DataGridView, das in auf einem Register-Control liegt.

    Nun hab ich mir überlegt, das wenn das DragEnter-Event des Window gefeuert wird, mache ich meine Prüfung, aktiviere das fenster und erlaube das droppen, oder eben auch nicht.
    Soweit so gut. Die Prüfung funktioniert einwandfrei, aber das DragEnter-Event wird nicht immer gefeuert. Wenn man mit der Maus schnell genug ist, wird das Event nicht gefeuert, das Fenster nicht aktiviert und droppen darf ich dann natürlich auch nicht.
    Bewege ich die Maus nun vorsichtig wieder zum Rand des Fensters, wird das Event plötzlich gefeuert.

    Ein Bild von meinem Fenster häng ich an den Thread.
    Das Problem tritt auf, wenn man sehr schnell von Links oder Rechts etwas auf das Grid ziehen möchte.
    Da an der Stelle viel mit Drag&Drop gearbeitet wird und die Leute dabei nicht gerade langsam sind, ist das echt ein Problem.

    Kennt jemand das Problem und kann mir sagen, wie ich das beheben kann?

    Danke schonmal
    Andi
    Attached Files

  • #2
    Sollte das nicht eher im DragOver Event passieren? Ich glaube das ist eigentlich das Event was primär benutzt wird um zu entscheiden ob ein Element akzeptiert wird oder nicht. Die Property im Event heisst Effects (vielleicht eine etwas unglückliche Namensgebung). Setzt man diese auf None kann man das Item nicht auf das Target droppen.
    Ich habe das damals in meiner Windows Forms Anwendung jedenfalls so benutzt.

    Comment


    • #3
      Das kann sein, aber in meinem Fall ist es egal, das DragOver feuert genauso wenig wie das DragEnter

      Comment


      • #4
        Hm OK da muss ich passen. Ich hab sowas nur in Windows Forms gemacht. Dort hatte ich allerdings auch eine MDI Anwendung und das hat einwandfrei funktioniert.

        Sind das wirklich unterschiedliche Anwendungen? Also wirklich unterschiedliche Fenster? Oder befinden diese sich alle in der gleichen Anwendung ala MDI?

        Hier gibts auch sowas ähnliches:

        http://stackoverflow.com/questions/2...k-on-windows-7

        Schau mal

        Comment


        • #5
          Moin,

          nein, es ist eine einzige Anwendung und die Fenster sind echte Fenster und keine MDI-Childs.
          Ich kann aber entwarnung geben. Ich hab den Fehler heute Nacht noch gefunden. Ich hab (wohl um was auszuprobieren) beim Deaktivieren des Fensters das AllowDrop auf false gesetzt und dann vergessen zu entfernen und natürlich jedes mal wenn ich mir den Code durchgelesen hab, überlesen.
          Jetzt funktionierts so wie ich es will

          Danke trotzdem für die Hilfe
          Andi

          Comment

          Working...
          X