【转】【笔记】C#实现拖拽功能+MessageBox居父窗口中显示
2012-06-26 19:33
309 查看
首先,这个拖拽功能是我今天早上突然想到的。我想我能不能做呢。事实上C#上实现确实很简单。
拖出一个窗体。然后需要实现窗体的DragDrop和DragEnter方法。具体代码如下
第一句话是得到拖拽事件e和filedrop相关的数据。返回为object,强制转换成数组,然后取第一部分数据就可以了。第二句可能你已经注意到了。这个MessageBox了。他不是系统的。而是一个外来引用的。主要是系统的messagebox只能居于屏幕中间。我想让他居于父窗体中间,简单的方法可能是我不知道。其实可以使用获取窗口位置然后继承系统的MessageBox来实现一个自己的。我呢。直接去codeproject找个现成的。一会就说怎么导入。
第二个方法里面主要是实现当拖拽至窗体释放后触发的事件。判断e里面的数据是不是FileDrop类型。然后设置鼠标为一个链接标志。否则为空
现在说Messagebox。这个messagebox支持各种定制的信息显示。可以看看这个文章这个我已经提取到工程目录了。如果你需要使用这个类,需要这样做。我也是摸索的。。
1.打开你自己需要使用该messagebox的工程,然后在解决方案上如下图所知点击。
然后定位到DialogBox目录。也就是我将要导入的。然后打开DialogBox.csproj然后解决方案视图就有这个工程了
2.点击主工程,也就是我这里的drop工程的引用
添加引用,然后再弹出的项目选项卡就能显示出我们第一步的那个工程了
确定即可
3.最后一步,在Form1.cs也就是主工程的主文件里使用导入工程的命名空间using CodeProject.Dialog;
这个我是看了源码看到的。CodeProject是作者定义的命名空间。
4.然后就可以像使用系统的MessageBox一样使用这个了。不过这里是MsgBox.运行一下,就会发现消息框已经可以居中显示在父窗体了。
有错误希望博友们指教。。毕竟菜鸟一只。。
下载地址:http://rrurl.cn/5NkH4A
拖出一个窗体。然后需要实现窗体的DragDrop和DragEnter方法。具体代码如下
private void Form1_DragDrop(object sender, DragEventArgs e) { string path = ((Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); //检索与指定的数据格式关联的数据。 MsgBox.Show(path); } private void Form1_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) //如果此实例中存储的数据与指定的格式关联,或者可以转换成指定的格式,则为 true;否则为 false。 e.Effect = DragDropEffects.Link; //默认情况下,在此属性中指定的效果将确定拖放操作目标的鼠标光标。 这可用来向用户提供有关操作的反馈,该操作将在放下对应的对象时发生。 else e.Effect = DragDropEffects.None; } }
第一句话是得到拖拽事件e和filedrop相关的数据。返回为object,强制转换成数组,然后取第一部分数据就可以了。第二句可能你已经注意到了。这个MessageBox了。他不是系统的。而是一个外来引用的。主要是系统的messagebox只能居于屏幕中间。我想让他居于父窗体中间,简单的方法可能是我不知道。其实可以使用获取窗口位置然后继承系统的MessageBox来实现一个自己的。我呢。直接去codeproject找个现成的。一会就说怎么导入。
第二个方法里面主要是实现当拖拽至窗体释放后触发的事件。判断e里面的数据是不是FileDrop类型。然后设置鼠标为一个链接标志。否则为空
现在说Messagebox。这个messagebox支持各种定制的信息显示。可以看看这个文章这个我已经提取到工程目录了。如果你需要使用这个类,需要这样做。我也是摸索的。。
1.打开你自己需要使用该messagebox的工程,然后在解决方案上如下图所知点击。
然后定位到DialogBox目录。也就是我将要导入的。然后打开DialogBox.csproj然后解决方案视图就有这个工程了
2.点击主工程,也就是我这里的drop工程的引用
添加引用,然后再弹出的项目选项卡就能显示出我们第一步的那个工程了
确定即可
3.最后一步,在Form1.cs也就是主工程的主文件里使用导入工程的命名空间using CodeProject.Dialog;
这个我是看了源码看到的。CodeProject是作者定义的命名空间。
4.然后就可以像使用系统的MessageBox一样使用这个了。不过这里是MsgBox.运行一下,就会发现消息框已经可以居中显示在父窗体了。
有错误希望博友们指教。。毕竟菜鸟一只。。
下载地址:http://rrurl.cn/5NkH4A
相关文章推荐
- 【笔记】C#实现拖拽功能+MessageBox居父窗口中显示
- C# 小工具:读取excel表格,实现筛选某一列的功能,并显示处理
- c# winform TreeView控件中实现拖拽的功能
- C# WinForm 实现增删改查等功能(Access版) 系列之一-显示
- [学习笔记]小型论坛功能——实现按照指定每页的行数来分页显示记录[3]
- C#文件文件夹拖拽功能的实现
- 【C#功能实现】C# 输出pdf文件流在页面上显示
- C# listview如何显示网格线以及如何实现item的选中功能
- C#之winform实现文件拖拽功能
- WinForm实现简单的拖拽功能(C#)
- C#+AE实现类似IDentify功能及对高亮显示相
- QT 实现拖拽记事本功能 直接读取 并且显示
- C#控件Picturebox实现鼠标拖拽功能
- WinForm实现简单的拖拽功能(C#)(2)
- c# 实现Picturebox的鼠标拖拽功能
- WinForm实现简单的拖拽功能(C#)
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- C#实现外部图片的拖拽到应用程序的简单功能,附全部源码,供有需要的参考
- C# 图片盖章功能实现,支持拖拽-旋转-放缩-保存
- c#实现根据网络IP显示地理位置功能示例