2009-07-15 6 views

Répondre

1

Vous pouvez facilement envelopper ce que cet article décrit dans une propriété attachés/comportements ...

ie. TextBoxManager.AllowDrag = "False" (Pour plus d'informations, consultez ces 2 articles CodeProject - Drag and Drop Sample et verre Effet échantillon link text)

Ou essayer le nouveau mélange SDK Behaviors

MISE À JOUR

  • Lire également this article par Bill Kempf sur les comportements attachés
  • Et comme kek444 souligné dans les commentaires, vous venez de créer un style par défaut pour textbxo cela à ensemble de propriété tached!
+1

Et bien sûr, définissez les propriétés attachées dans un style par défaut pour la zone de texte, si cela est nécessaire pour sauver quelques manipulations. –

3

Utilisez les éléments suivants après InitializeComponent()

DataObject.AddCopyingHandler(textboxName, (sender, e) => { if (e.IsDragDrop) e.CancelCommand(); }); 
+1

Pour ceux qui cherchent à faire cela, c'est de loin le moyen le plus simple de le faire à partir du code. Une explication complète est ici: http://www.switchonthecode.com/tutorials/wpf-snippet-disabling-dragging-from-a-textbox – stone

0

Créez votre contrôle utilisateur propriétaire ex MyTextBox: TextBox et passer outre:

protected override void OnDragEnter(DragEventArgs e) 
    { 
     e.Handled = true; 
    } 

    protected override void OnDrop(DragEventArgs e) 
    { 
     e.Handled = true; 
    } 


    protected override void OnDragOver(DragEventArgs e) 
    { 
     e.Handled = true; 
    } 
+2

Cela ne fonctionne pas. Il empêche la chute, mais ne fait pas glisser le contrôle. En outre, des choses horribles peuvent se produire lorsque vous déposez le texte de la zone de texte ailleurs. – Mark

0

Personnellement, je créé un contrôle TextBox personnalisé qui ne permet pas faites glisser comme suit:

/// <summary> 
/// Represents a <see cref="TextBox"/> control that does not allow drag on its contents. 
/// </summary> 
public class NoDragTextBox:TextBox 
{ 
    /// <summary> 
    /// Initializes a new instance of the <see cref="NoDragTextBox"/> class. 
    /// </summary> 
    public NoDragTextBox() 
    { 
     DataObject.AddCopyingHandler(this, NoDragCopyingHandler); 
    } 

    private void NoDragCopyingHandler(object sender, DataObjectCopyingEventArgs e) 
    { 
     if (e.IsDragDrop) 
     { 
      e.CancelCommand(); 
     } 
    } 
} 

Au lieu d'utiliser TextBox, utilisez local: NoDragTextBox où "local" est l'alias de l'emplacement de l'assembly NoDragTextBox. La même logique ci-dessus peut également être étendue pour empêcher Copy/Paste sur TextBox.

Pour plus d'informations vérifier la référence au code ci-dessus à http://jigneshon.blogspot.be/2013/10/c-wpf-snippet-disabling-dragging-from.html

Questions connexes