2008-12-02 6 views

Répondre

5

Malheureusement, TextBox, RichTextBox et téléspectateurs FlowDocument marquent toujours des événements glisser-déposer comme manipulé, ce qui les empêche de bouillonner jusqu'à vos gestionnaires. Vous pouvez restaurer les événements glisser-déplacer interceptés par ces contrôles en gérant de force les événements glisser-déposer (utilisez UIElement.AddHandler et définissez managedEventsToo sur true) et définissez e.Handled sur false dans votre gestionnaire.

+0

À la votre! Votre idée est également discutée ici: http://social.msdn.microsoft.com/forums/en-US/wpf/thread/a539c487-1dec-4935-b91b-c3ec252eb834 – NoizWaves

3

Il s'avère que je ne pouvais pas tomber sur mon TextBox pour une raison quelconque, mais tomber sur les boutons fonctionne bien. Got it travail en ajoutant « AllowDrop = « true » » à ma fenêtre et l'ajout gestionnaire d'événements goutte à bouton comprenant:

private void btnFindType_Drop(object sender, DragEventArgs e) 
{ 
    if (e.Data is System.Windows.DataObject && 
    ((System.Windows.DataObject)e.Data).ContainsFileDropList()) 
    { 
    foreach (string filePath in ((System.Windows.DataObject)e.Data).GetFileDropList()) 
    { 
     // Processing here 
    } 
    }    
} 
3

J'ai remarqué que glisser & drop dans WPF n'est pas aussi facile que cela pourrait être. Donc, je l'ai écrit un court article sur ce sujet: http://www.wpftutorial.net/DragAndDrop.html

+0

Non, vous avez copié et collé quelqu'un d'autre article sans attribution . Voté vers le bas. –

+0

@Nick: Je pense que c'était l'article original qui a été copié par d'autres. J'ai googlé le premier paragraphe et trouvé des résultats qui ont été pris ailleurs. –

+4

Nick, Si vous pensez que ce n'est pas l'original, alors vous devriez dire quel est l'original. Comment peux-tu dire quelque chose sans nous montrer de preuve ??? –

7

les opérations suivantes:

private void MessageTextBox_Drop(object sender, DragEventArgs e) 
    { 
     if (e.Data is DataObject && ((DataObject)e.Data).ContainsFileDropList()) 
     { 
      foreach (string filePath in ((DataObject)e.Data).GetFileDropList()) 
      { 
       // Processing here  
      } 
     } 
    } 


    private void MessageTextBox_PreviewDragEnter(object sender, DragEventArgs e) 
    { 
     var dropPossible = e.Data != null && ((DataObject)e.Data).ContainsFileDropList(); 
     if (dropPossible) 
     { 
      e.Effects = DragDropEffects.Copy; 
     } 
    } 

    private void MessageTextBox_PreviewDragOver(object sender, DragEventArgs e) 
    { 
     e.Handled = true; 
    } 
0

J'ai eu problème similaire, les événements de chute et faites glisser entrer dans les événements ne sont pas tirés. Le problème était avec les paramètres de compte utilisateur Windows. Réglez-le au paramètre le moins sécurisé et essayez le même code que cela fonctionne.

Questions connexes