小菜学习Winform(六)剪切板和拖放复制
前言
在做winform项目的时候有时候会用到复制粘贴,在.net中提供了Clipboard类来操作剪切板,我们来看下。
clipbrd.exe
clipbrd是系统剪切板程序,但是在vista及以上程序不提供,我们需要网上下载一个并复制到System32目录下。
直接在运行里面敲入”clipbrd“命令就可以打开clipbrd剪切板程序。
可以直接复制一些文字,clipbrd程序会实时的显示出来。
Clipboard类
关于Clipboard类文本复制粘贴主要使用方法:Clipboard.SetText、Clipboard.ContainsText和Clipboard.GetText,分别是设置文本、判断文本存在和获取文本。我们看个示例:
1 /// <summary> 2 /// 复制 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 private void button1_Click(object sender, EventArgs e) 7 { 8 if (!textBox1.SelectedText.Equals("")) 9 Clipboard.SetText(textBox1.SelectedText); 10 else 11 MessageBox.Show("未选中文本!"); 12 } 13 14 /// <summary> 15 /// 粘贴 16 /// </summary> 17 /// <param name="sender"></param> 18 /// <param name="e"></param> 19 private void button2_Click(object sender, EventArgs e) 20 { 21 if (Clipboard.ContainsText()) 22 textBox2.Text = Clipboard.GetText(); 23 else 24 MessageBox.Show("剪切板没有文本!"); 25 }
运行结果:
上面说的是剪切板的文本复制,Clipboard类也支持图片复制粘贴,提供的静态方法是:Clipboard.SetImage、Clipboard.ContainsImage和Clipboard.GetImage,图片复制粘贴的使用方法和文本复制粘贴一样,参考上面的代码就行。GetImage方法返回的是Image对象。
拖放复制
平常我们复制粘贴都是Ctrl+C/Ctrl+V,但是这种操作会比较繁琐,我们想利用鼠标就可以快速的复制粘贴,这种在winform中是可以实现的,我们看下示例:
1 private void lvSource_ItemDrag(object sender, ItemDragEventArgs e) 2 { 3 lvSource.DoDragDrop(e.Item, DragDropEffects.Copy); 4 } 5 6 private void txtMessage_DragEnter(object sender, DragEventArgs e) 7 { 8 e.Effect = DragDropEffects.Copy; 9 } 10 11 private void txtMessage_DragDrop(object sender, DragEventArgs e) 12 { 13 ListViewItem lvi = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); 14 txtMessage.Text = lvi.Text; 15 16 lvSource.Items.Remove(lvi); 17 }
我们做的示例是拖放ListView中的项复制到TextBox中,lvSource_ItemDrag事件在拖放项时发生,lvSource.DoDragDrop(e.Item, DragDropEffects.Copy);这句代码的意思是开始拖放操作:传递数据(要复制的值)和设置拖放操作效果。DragDropEffects是枚举类型:
成员名称 | 说明 |
---|---|
All | Copy 、Move 和 Scroll 效果的组合。 |
Copy | 将拖动源中的数据复制到放置目标。 |
Link | 将拖动源中的数据链接到放置目标。 |
Move | 将拖动源的数据移动到放置目标。 |
None | 放置目标不接受该数据。 |
Scroll | 拖动时可以滚动目标,以定位在目标中当前不可见的某个放置位置。 |
txtMessage_DragEnter作用就是设置目标的放置效果,如果注释掉事件里面的代码,就会出现下面这种情况,并且值没有复制。
txtMessage_DragDrop事件是拖放完成做的操作,从代码中我们可以看出,获取拖放的值并不是从剪切板中取的,而是通过参数传递,也就是一开始lvSource.DoDragDrop(e.Item, DragDropEffects.Copy);在做拖放的时候,我们看下clipbrd.exe程序里并没有拖放的值。
运行结果:
程序下载:剪切板和拖放复制.rar
微信公众号:你好架构
出处:http://www.cnblogs.com/xishuai/
公众号会不定时的分享有关架构的方方面面,包含并不局限于:Microservices(微服务)、Service Mesh(服务网格)、DDD/TDD、Spring Cloud、Dubbo、Service Fabric、Linkerd、Envoy、Istio、Conduit、Kubernetes、Docker、MacOS/Linux、Java、.NET Core/ASP.NET Core、Redis、RabbitMQ、MongoDB、GitLab、CI/CD(持续集成/持续部署)、DevOps等等。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架