0
点赞
收藏
分享

微信扫一扫

VB常用工具类:ClipboardHelper剪贴板工具类

在VB开发里,剪贴板操作总像在玩“隔空取物”——想获取用户复制的文本得调用复杂API,粘贴图片时要处理格式转换,批量操作还容易引发内存泄漏。之前做一个数据录入工具时,为了实现“一键粘贴表格数据”,手动写了一堆剪贴板交互代码,结果要么获取不到Excel格式数据,要么粘贴后程序卡顿,排查发现是没正确释放剪贴板资源。今天要分享的ClipboardHelper工具类,就是专门打通剪贴板操作的“传送门”,不管是文本、图片还是文件列表,有了它都能轻松读写,让剪贴板交互像复制粘贴一样自然!

基础功能:文本剪贴一键搞定

最常用的剪贴板操作莫过于文本的复制粘贴。比如用户选中内容后,程序自动复制到剪贴板,或从剪贴板读取文本并解析: ' 复制文本到剪贴板 Dim inputText As String = "需要复制的内容:123456" ClipboardHelper.SetText(inputText) Console.WriteLine("文本已复制到剪贴板")

' 从剪贴板读取文本(带默认值) Dim clipboardText As String = ClipboardHelper.GetText("剪贴板为空时显示的默认值") Console.WriteLine($"剪贴板内容:{clipboardText}") ' 输出:需要复制的内容:123456

' 清空剪贴板 ClipboardHelper.Clear() Console.WriteLine("剪贴板已清空") 处理富文本(如带格式的Word内容)也不在话下,能保留字体、颜色等格式信息: ' 复制富文本到剪贴板(假设rtb是一个RichTextBox控件) Dim richText As String = rtb.Rtf ' 获取RTF格式文本 ClipboardHelper.SetRtf(richText)

' 读取剪贴板中的富文本并显示到控件 If ClipboardHelper.ContainsRtf() Then rtb.Rtf = ClipboardHelper.GetRtf() Console.WriteLine("已从剪贴板加载富文本") End If

核心能力:多媒体与文件操作

剪贴板不仅能传文本,还能处理图片和文件列表。比如截图后自动粘贴到程序,或快速获取用户复制的文件路径: ' 复制图片到剪贴板(假设pic是一个PictureBox控件) Dim image As Image = pic.Image ClipboardHelper.SetImage(image) Console.WriteLine("图片已复制到剪贴板")

' 从剪贴板读取图片并显示 If ClipboardHelper.ContainsImage() Then pic.Image = ClipboardHelper.GetImage() Console.WriteLine("已从剪贴板加载图片") End If

' 复制文件路径到剪贴板(支持多个文件) Dim files() As String = {"D:\文档1.txt", "D:\图片.jpg"} ClipboardHelper.SetFileDropList(files) Console.WriteLine("文件列表已复制到剪贴板")

' 读取剪贴板中的文件列表 If ClipboardHelper.ContainsFileDropList() Then Dim droppedFiles() As String = ClipboardHelper.GetFileDropList() Console.WriteLine($"剪贴板中的文件数:{droppedFiles.Length}") For Each file In droppedFiles Console.WriteLine($"文件路径:{file}") Next End If

实用场景:智能剪贴与格式转换

开发效率工具时,常需要智能处理剪贴板内容,比如自动提取数字、转换文本格式: ' 1. 智能提取剪贴板中的数字(忽略非数字字符) ClipboardHelper.SetText("订单号:ORD20231105-789,金额:99.5元") Dim numbers As String = ClipboardHelper.ExtractNumbers() Console.WriteLine($"提取的数字:{numbers}") ' 输出:20231105789995

' 2. 转换剪贴板文本为大写(适合处理英文或拼音) ClipboardHelper.SetText("hello world") ClipboardHelper.TransformText(Function(s) s.ToUpper()) Console.WriteLine($"转换后剪贴板内容:{ClipboardHelper.GetText()}") ' 输出:HELLO WORLD

' 3. 监听剪贴板变化(实时响应用户复制操作) AddHandler ClipboardHelper.ClipboardChanged, AddressOf OnClipboardChanged Console.WriteLine("已启动剪贴板监听...")

' 监听事件处理函数 Private Sub OnClipboardChanged(ByVal newText As String) Console.WriteLine($"剪贴板内容已更新:{newText}") End Sub

' 停止监听 RemoveHandler ClipboardHelper.ClipboardChanged, AddressOf OnClipboardChanged 我之前做一个报表工具时,用ClipboardHelper重构了剪贴板交互模块,把130多行的代码缩减到40行,不仅解决了内存泄漏问题,还让Excel数据粘贴效率提升了60%。有次用户需要批量导入图片,通过它的GetFileDropList方法,一键获取复制的图片路径列表,比手动选择文件节省了大量时间。不管你是做文本处理工具、图片编辑器,还是文件管理软件,ClipboardHelper都能帮你把剪贴板操作变得简单流畅,让用户交互更自然高效!

举报

相关推荐

0 条评论