拖动文本框中的文件或文件夹? C#

时间:2009-09-02 22:45:29

标签: c# .net drag-and-drop

如何将文件或文件夹拖到文本框中?我想把foldername放在那个文本框中。 C#.NET

5 个答案:

答案 0 :(得分:17)

我在此link

中编写了此代码
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
      textBox1.AllowDrop = true;
      textBox1.DragEnter += new DragEventHandler(textBox1_DragEnter);
      textBox1.DragDrop += new DragEventHandler(textBox1_DragDrop);

    }

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

    private void textBox1_DragDrop(object sender, DragEventArgs e)
    {
      string[] FileList = (string[])e.Data.GetData(DataFormats.FileDrop, false);


    string s="";

    foreach (string File in FileList)
    s = s+ " "+ File ;
    textBox1.Text = s;
    }
  }

答案 1 :(得分:4)

在TextBox上将AllowDrop设置为true,并为DragDrop和DragEnter事件编写以下代码:

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

    private void textBox1_DragDrop(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            string[] fileNames = (string[])e.Data.GetData(DataFormats.FileDrop);
            textBox1.Lines = fileNames;
        }
    }

答案 2 :(得分:1)

CodeProject has a really nice example这样做,包括如何同时启用拖放功能(从资源管理器到您的应用,从应用到资源管理器)。

答案 3 :(得分:0)

Control有各种各样的事件来处理拖放 - 你可能只需要看看你想要的DragDrop事件。

答案 4 :(得分:0)

如果您收到以下错误消息,这在使用Visual Studio 2015时适用于我,请尝试 e。影响而不是e.Effects

严重级代码描述项目文件行抑制状态 错误CS1061' DragEventArgs'不包含'效果'的定义没有扩展方法'效果'接受类型' DragEventArgs'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)