+ -
当前位置:首页 → 问答吧 → 拖动文件到文本框,如何得到路径?

拖动文件到文本框,如何得到路径?

时间:2011-12-22

来源:互联网

如题,现在有一个文本框,TextBox1,allowdrop设置为true,未做其他设置,怎么才能让一个文件拖到上面就显示这个文件的路径(最好绝对路径)呢??翻书没翻到。

作者: z46988646   发布时间: 2011-12-22

设置textBox1的DragEnter和DragDrop事件,然后在事件里这么填就行。

C# code

        private void textBox1_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
            {
                e.Effect = DragDropEffects.All;
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }

        private void textBox1_DragDrop(object sender, DragEventArgs e)
        {
            String[] files = (String[])e.Data.GetData(DataFormats.FileDrop, false);
            if (files.Length > 0)
            {
                textBox1.Text = files[0];
            }
        }

作者: mayswind   发布时间: 2011-12-22

public partial class Form1 : Form
  {
  public Form1()
  {
  InitializeComponent();

  this.textBox1.Multiline = true;
  this.textBox1.AllowDrop = true;
  this.textBox1.DragDrop+=new DragEventHandler(textBox1_DragDrop);
  this.textBox1.DragEnter+=new DragEventHandler(textBox1_DragEnter);
  }

  protected void textBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
  {
  IDataObject dataObject = e.Data;
  if (dataObject.GetDataPresent(DataFormats.FileDrop))
  {
  e.Effect = DragDropEffects.Copy;
  }
  }

  protected void textBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
  {
   
  IDataObject dataObject = e.Data;

  if (dataObject == null) return;

  if (dataObject.GetDataPresent(DataFormats.FileDrop))
  {
  string[] files = (string[])dataObject.GetData(DataFormats.FileDrop);

  foreach (string file in files)
  {
  System.IO.FileInfo fi = new System.IO.FileInfo(file);
  this.textBox1.Text += "文件名:" + fi.Name;
   
  }

  }
  }

  }

作者: wuyq11   发布时间: 2011-12-22