zoukankan      html  css  js  c++  java
  • Drag and drop folder to a TextBox in C#

    Last evening I came up with a requirement to drag a folder path into a TextBox in one of my Windows form applications. So I just want to share it with you all through a simple example.

    Drag-and-drop operations in WinForms accomplish via handling of a series of events, mostly with the DragDrop, DragEnter and DragLeave. Working with the event arguments of these events eventually you can facilitate drag and drop.

    How to perform a drag & drop

    Set the property called AllowDrop to true on the selected control. (a TextBox in this case)

    The DragEnter event for the control where the drop will occur, do the type-checking here to ensure that the data being dragged is of an acceptable type. In this case it is FileDrop, which specifies the Windows file drop format.

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

    The DragDrop event for the control where the drop will occur, retrieve the data being dragged using the GetData.

    private void txtFolderPath_DragDrop(object sender, DragEventArgs e)
    {
         if (e.Data.GetDataPresent(DataFormats.FileDrop))
         {
              string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
     
              if (Directory.Exists(files[0]))
              {
                   this.txtFolderPath.Text = files[0];
              }
         }
    }

    In the complete code below, a TextBox control is the control being the drop will occur. Once you drag a folder into the TextBox and drop, the relevant folder path is added into the TextBox text property and display.

    public partial class Form1 : Form
    {
         private System.Windows.Forms.TextBox txtFolderPath = new TextBox();
     
         public Form1()
         {
              InitializeComponent();
     
              this.txtFolderPath.Location = new System.Drawing.Point(20, 30);
              this.txtFolderPath.Size = new System.Drawing.Size(200, 20);
              this.Controls.Add(this.txtFolderPath);
     
              this.txtFolderPath.AllowDrop = true;
              this.txtFolderPath.DragEnter += new DragEventHandler(txtFolderPath_DragEnter);
              this.txtFolderPath.DragDrop += new DragEventHandler(txtFolderPath_DragDrop);
         }
     
         private void txtFolderPath_DragDrop(object sender, DragEventArgs e)
         {
              if (e.Data.GetDataPresent(DataFormats.FileDrop))
              {
                   string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
     
                   if (Directory.Exists(files[0]))
                   {
                        this.txtFolderPath.Text = files[0];
                   }
              }
         }
     
         private void txtFolderPath_DragEnter(object sender, DragEventArgs e)
         {
              if (e.Data.GetDataPresent(DataFormats.FileDrop))
              {
                   e.Effect = DragDropEffects.Copy;
              }
              else
              {
                   e.Effect = DragDropEffects.None;
              }
         }
    }

    Ref: https://erangatennakoon.wordpress.com/2012/04/10/drag-and-drop-folder-to-a-textbox-in-c/

  • 相关阅读:
    61个下拉菜单实例
    简单图片放大效果
    QQ,MSN,Skype在线客服代码
    codesmith自定义模板之实体层
    如何利用缓存提高ASP.NET网站速度
    10+Jquery Tooltip Plugins and Tutorial Collection
    10个ajax 上传插件
    ASP.NET 中 “返回上一页”,“上一步”的实现方法
    执行多条SQL语句,事务处理
    [Asp.Net+C#]Datagrid使用技巧四(怎样控制在一个单元格中放置多个操作按钮及删除数据)
  • 原文地址:https://www.cnblogs.com/open-coder/p/12661797.html
Copyright © 2011-2022 走看看