如何将文件或文件夹拖到文本框中?我想把foldername放在那个文本框中。 C#.NET
答案 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'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)