源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c#中实现文件拖放打开的方法

  • 时间:2022-04-20 13:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c#中实现文件拖放打开的方法
C#实现文件拖放并打开文件 需要知道的ListBox的两个事件:当您在控件的边界内拖动对象时,便会发生 DragEnter 事件;该事件用于确 定当前拖动的对象是不是您要放到控件上的对象。 在将一个或多个文件拖到控件上时,需要处理此事件。 这使 得在将对象拖到控件上方时,能够根据所拖动的对象显示相应的图标。 将拖动的对象释放到控件上时,会发生 DragDrop 事件。 功能描述:向ListBox拖入一个文件,ListBox显示该文件的路径,然后单击该路径,点击Open按钮打开该文件。 [img]http://files.jb51.net/file_images/article/201310/2013100916280812.jpg[/img] 代码实现: 需要将ListBox的AllowDrop属性改为true,并实现它的DragEnter、DragDrop这两个事件。
[u]复制代码[/u] 代码如下:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace DragDrop {     public partial class DragDrop : Form     {         public string FilePath;         public DragDrop()         {             InitializeComponent();         }         /// <summary>         /// 获取ListBox的值。         /// </summary>         /// <returns></returns>         public string GetListBoxItem()         {             string filePath = string.Empty;             bool isSelected = IsListBoxSelected();             if (isSelected==true)             {                 string listBoxItemValue = lbFilePath.SelectedItem.ToString();                 filePath = listBoxItemValue;             }             else             {                 MessageBox.Show("ListBox must be selected.");             }             return filePath;         }         /// <summary>         /// ListBox内的值是否被选中。         /// </summary>         /// <returns></returns>         public bool IsListBoxSelected()         {             bool selected;             if (lbFilePath.SelectedIndex == -1)//SelectedIndex==-1时,表示未选中任何项。             {                 selected = false;             }             else             {                 selected = true;             }             return selected;         }         private void lbFilePath_DragEnter(object sender, DragEventArgs e)         {             if (e.Data.GetDataPresent(DataFormats.FileDrop))             {                 e.Effect = DragDropEffects.All;             }             else             {                 e.Effect = DragDropEffects.None;             }         }         private void lbFilePath_DragDrop(object sender, DragEventArgs e)         {             string[] s=(string[])e.Data.GetData(DataFormats.FileDrop,false);             for (int i = 0; i < s.Length; i++)             {                 lbFilePath.Items.Add(s[i]);             }         }         private void btnOpenFile_Click(object sender, EventArgs e)         {             string filePath=GetListBoxItem();             if (!string.IsNullOrEmpty(filePath))             {                 System.Diagnostics.Process.Start(filePath);             }         }     } }
总结: Data 对象的 GetData 方法返回一个字符串数组,该数组包含拖到该列表框控件中的文件的完整路径名。 可以使用此文件路径信息来执行需要对文件执行的任何操作。 补充代码:
[u]复制代码[/u] 代码如下:
private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)    {    if (e.Data.GetDataPresent(DataFormats.FileDrop))    e.Effect = DragDropEffects.Link;     else e.Effect = DragDropEffects.None;     }    private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)    {    //其中label1.Text显示的就是拖进文件的文件名;    label1.Text = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();     }  
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部