C#:拖拽&在.exe(icon)上删除文件并获取文件路径

时间:2015-04-29 06:04:46

标签: c# drag-and-drop

我是C#的新手,我没有解决这个问题。这就是我想要实现的目标。 每当我将文件拖放到.exe文件上时(在图标本身上),应用程序应捕获拖动文件的文件路径。

感谢。

3 个答案:

答案 0 :(得分:3)

如果我理解正确,您希望将文件拖放到exe的图标上,而不是应用程序本身。如果是这样,可以使用传递给应用程序的参数轻松实现。如果在创建控制台应用程序时检查原始样板代码,则它具有应用程序入口点:

static void Main(string[] args)

如果将文件拖放到应用程序的图标上,则args [0]将保留要删除的文件的名称。如果目标是将文件放到EXE文件上,那么有很多关于SO的教程。

答案 1 :(得分:1)

如果您创建以下代码,那么当您将文件拖到exe图标上时,args [0]会将其路径保存为参数:  (我添加了if语句,如果你启动程序而不拖动任何东西  它不应该崩溃)

class Program
    {
        static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                Console.WriteLine(args[0]);
            }
            Console.ReadLine();
        }
    }

答案 2 :(得分:1)

通过将默认的string[] args添加到Main中的Program函数中,我能够将拖放操作添加到使用Windows窗体创建的可执行文件/快捷方式上。然后,将相同的参数添加到Form1的构造函数中,并传递从args收集的相同的Main

Program.cs

static class Program
{
    [STAThread]
    //add in the string[] args parameter
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        //pass in the args to the form constructor
        Application.Run(new Form1(args));
    }
}

Form1.cs

//add in the string[] args parameter to the form constructor
public Form1(string[] args)
{
    InitializeComponent();

    //if there was a file dropped..
    if (args.Length > 0)
    {
        var file = args[0];
        //do something with the file now...
    }
}