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

V信asmp001

V信asmp001

2016-02-19 10:52

下面图老师小编要向大家介绍下c#中实现文件拖放打开的方法,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

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

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

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

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

DragDrop 事件。

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


代码实现:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

需要将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();
        }

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/webkaifa/)

        /// 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();  
  }  

展开更多 50%)
分享

猜你喜欢

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

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

C#中实现DataGrid双向排序

编程语言 网络编程
C#中实现DataGrid双向排序

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Visual C#实现文件分割合并器

编程语言 网络编程
Visual C#实现文件分割合并器

C#中实现网段扫描的代码

编程语言 网络编程
C#中实现网段扫描的代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Java 中LockSupport类在C#中的实现

编程语言 网络编程
Java 中LockSupport类在C#中的实现

在C#程序中实现插件架构

编程语言 网络编程
在C#程序中实现插件架构

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

提示出现unresolved external symbol _main的解决方法

提示出现unresolved external symbol _main的解决方法

float ad浮动广告代码

float ad浮动广告代码
下拉加载更多内容 ↓