惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Security Blog
Microsoft Security Blog
J
Java Code Geeks
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
L
LangChain Blog
I
InfoQ
D
Docker
F
Fortinet All Blogs
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
月光博客
月光博客
B
Blog
Engineering at Meta
Engineering at Meta
T
Tailwind CSS Blog
罗磊的独立博客
博客园_首页
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
IT之家
IT之家
V
V2EX

博客园 - eyye的眼睛

又到清明节 sql中去除重复的项 戒烟吧 李开复:如何设计你的2015年度计划 网易邮箱已经忘记了客户 用程序集编写clr表值函数:把正则表达式引入数据库中 从天气网提取气象预报数据 sql 几点记录 sql 重复数据只保留一条 (转)android-sdk_r20.0.3-windows无法正常更新 合并两个rtf文件 杀掉叽哩瓜叽(jlguaji.exe)的两种方法 股票数据(转) word转化为图片(2) 如何将格式文本转化为图片 SQL Server 的事务处理的两种格式 sql IN语句如何优化?(转) 向EXCEL批量导出数据(转) 禅语
RichTextBox的拖放功能DragDrop
eyye的眼睛 · 2012-10-28 · via 博客园 - eyye的眼睛

参考:http://blog.iordanov.info/?p=32

实现RichTextBox的拖放功能只要设置EnableAutoDragDrop = true就自动实现了,非常简单。但是要实现一些个性化的控制,就有一点复杂了。

我需要实现的是:如果拖放文件进来,不想默认的一样嵌入一个对象连接,而是把文件上传;其他情况就想默认一样。

首先得设定AllowDrop = true;但是vs的控件的事件设定里面是没有DragEnter和DragDrop事件的,只能手工写代码。

   //添加事件
    private void AddRtb1Event()
        {
            rtb1.AllowDrop = true;
            
            rtb1.DragEnter += new DragEventHandler(rtb1_DragEnter);
            rtb1.DragDrop += new DragEventHandler(rtb1_DragDrop);
            
        }       
        private void rtb1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Copy  ;
            String[] supportedFormats = e.Data.GetFormats(true);
            if (supportedFormats != null)
            {
                List<string> sfList = new List<string>(supportedFormats);
                if (sfList.Contains(DataFormats.FileDrop.ToString()) )
                {
                    rtb1.EnableAutoDragDrop = false;
                }
                else
                {
                    rtb1.EnableAutoDragDrop = true;

                }
            }

            
        }

        private void rtb1_DragDrop(object sender, DragEventArgs e)
        {
            String[] supportedFormats = e.Data.GetFormats(true);
            if (supportedFormats != null)
            {
                List<string> sfList = new List<string>(supportedFormats);
                if (sfList.Contains(DataFormats.FileDrop.ToString()))
                {
                    string[] fileList = (string[])((System.Array)e.Data.GetData(DataFormats.FileDrop));
                    foreach (string fileName in fileList)
                    {
                        MessageBox.Show(fileName);
                    }
                }
            }
            rtb1.EnableAutoDragDrop = true;
        }

    }