2011-12-10 12 views
2

マウスイベントハンドラを使用してwpfでパスをドラッグ&ドロップすることはできますか?私はマウスの左ボタンでパスをドラッグし、グリッド上にマウスを置いてください。これはどうすればできますか?wpfでパスをドラッグアンドドロップする

+0

これは、別のスタックオーバーフローのスレッドで同様の方法で答えたです。必要に応じて少し変更する必要があります: http://stackoverflow.com/questions/806704/image-drag-and-drop-in-wpf-application – Xcalibur37

答えて

5

これを試してみてください:

考える: のTextBox名は "TextBox1テキストボックス"

public MainWindow() 
    { 
     // Initialize UI 
     InitializeComponent(); 

     // Loaded event 
     this.Loaded += delegate 
      { 
       TextBox1.AllowDrop = true; 
       TextBox1.PreviewDragEnter += TextBox1PreviewDragEnter; 
       TextBox1.PreviewDragOver += TextBox1PreviewDragOver; 
       TextBox1.Drop += TextBox1DragDrop; 
      }; 
    } 

    /// <summary> 
    /// We have to override this to allow drop functionality. 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    void TextBox1PreviewDragOver(object sender, DragEventArgs e) 
    { 
     e.Handled = true; 
    } 

    /// <summary> 
    /// Evaluates the Data and performs the DragDropEffect 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void TextBox1PreviewDragEnter(object sender, DragEventArgs e) 
    { 
     if (e.Data.GetDataPresent(DataFormats.FileDrop)) 
     { 
      e.Effects = DragDropEffects.Copy; 
     } 
     else 
     { 
      e.Effects = DragDropEffects.None; 
     } 
    } 

    /// <summary> 
    /// The drop activity on the textbox. 
    /// </summary> 
    /// <param name="sender"></param> 
    /// <param name="e"></param> 
    private void TextBox1DragDrop(object sender, DragEventArgs e) 
    { 
     // Get data object 
     var dataObject = e.Data as DataObject; 

     // Check for file list 
     if (dataObject.ContainsFileDropList()) 
     { 
      // Clear values 
      TextBox1.Text = string.Empty; 

      // Process file names 
      StringCollection fileNames = dataObject.GetFileDropList(); 
      StringBuilder bd = new StringBuilder(); 
      foreach (var fileName in fileNames) 
      { 
       bd.Append(fileName + "\n"); 
      } 

      // Set text 
      TextBox1.Text = bd.ToString(); 
     } 
    } 
関連する問題