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

所属分类: 网络编程 / ASP.NET 阅读数: 1610
收藏 0 赞 0 分享

C#实现文件拖放并打开文件

需要知道的ListBox的两个事件:当您在控件的边界内拖动对象时,便会发生 DragEnter 事件;该事件用于确

定当前拖动的对象是不是您要放到控件上的对象。 在将一个或多个文件拖到控件上时,需要处理此事件。 这使

得在将对象拖到控件上方时,能够根据所拖动的对象显示相应的图标。 将拖动的对象释放到控件上时,会发生

DragDrop 事件。

功能描述:向ListBox拖入一个文件,ListBox显示该文件的路径,然后单击该路径,点击Open按钮打开该文件。



代码实现:

需要将ListBox的AllowDrop属性改为true,并实现它的DragEnter、DragDrop这两个事件。

复制代码 代码如下:

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 方法返回一个字符串数组,该数组包含拖到该列表框控件中的文件的完整路径名。 可以使用此文件路径信息来执行需要对文件执行的任何操作。

补充代码:

复制代码 代码如下:
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();  
  }  

更多精彩内容其他人还在看

Asp.net图片上传实现预览效果的简单代码

这篇文章介绍了Asp.net图片上传实现预览效果的简单代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

ASP.NET动态设置页面标题的方法详解

这篇文章介绍了ASP.NET动态设置页面标题的方法详解,有需要的朋友可以参考一下
收藏 0 赞 0 分享

ASP.NET中获取URL重写前的原始地址详解

在ASP.NET中,如果你使用了URL重写,通过HttpContext.Request获取到的是重写后的地址。如果这个地址要返回给客户端(比如Redirect),我们一般希望是重写前的友好地址。
收藏 0 赞 0 分享

.Net实现合并文件的具体方法

这篇文章介绍了.Net实现合并文件的具体方法,有需要的朋友可以参考一下
收藏 0 赞 0 分享

asp.net 初始化文本框的小例子

这篇文章介绍了asp.net 初始化文本框的小例子,有需要的朋友可以参考一下,希望对你有所帮助
收藏 0 赞 0 分享

用WPF实现屏幕文字提示的实现方法

本文介绍WPF应用程序实现在屏幕上显示一行或多行文字通知。它没有标题栏和最大化最小化等按钮,可以有半透明背景以使文字的显示更清晰,鼠标点击后提示消失。
收藏 0 赞 0 分享

.NET更新Xml中CDATA内容的方法实例

这篇文章介绍了.NET更新Xml中CDATA内容的方法实例,有需要的朋友可以参考一下
收藏 0 赞 0 分享

.NET中弹出对话框的方法汇总

下面是本人对常用对话框使用的汇总,希望对大家有所帮助,同时也欢迎大家补充。
收藏 0 赞 0 分享

ASP.NET动态生成静态页面的实例代码

生成静态页有很多好处,可以缓解服务器压力、方便搜索网站搜索等等,下面介绍一下生成静态页的实例代码,有需要的朋友可以参考一下
收藏 0 赞 0 分享

利用.net控件实现下拉导航菜单制作的具体方法

这篇文章介绍了利用.net控件实现下拉导航菜单制作的具体方法,有需要的朋友可以参考一下,希望对你有所帮助
收藏 0 赞 0 分享
查看更多