C#内TextBox的Drog&Drop拖放操作
C#内TextBox的Drog&Drop拖放操作相信大家都做过Drog&Drop拖放.比如拖放文件,拖放TreeNode,ListView,但对TextBox的Drog&Drop拖放操作有个问题: 在MouseDown事件中调用DoDragDrop方法,因为鼠标一下去选中的文本就没有了!
其实解决的重点是如何控制即选中文本又可以拖放。 可以这么解决: 1.在TextBox的MouseUp时将选中的文本保存的TextBox.Tag属性中. 2.在MouseDown开始拖放时,然后还原Selection. 我们定义一个类用于记录MouseUp时的状态: public class DropData { public string _text; public int _start; public int _len; public DropData(string text, int start, int len) { _text = text; _start = start; _len = len; } } 在TextBox的MouseUp时将选中的文本保存的TextBox.Tag属性中. private void textBox1_MouseUp(object sender, MouseEventArgs e) { if (textBox1.SelectedText != "") { DropData d = new DropData(textBox1.SelectedText, textBox1.SelectionStart, textBox1.SelectionLength); textBox1.Tag = d; } } 在MouseDown开始拖放时,然后还原Selection.现在可能将选中的文本拖放到任一支持AllowDrop的控件中了。 private void textBox1_MouseDown(object sender, MouseEventArgs e) { if (textBox1.Tag == null) return; if (textBox1.Tag is DropData) { DropData d = textBox1.Tag as DropData; textBox1.SelectionStart = d._start; textBox1.SelectionLength = d._len; textBox1.DoDragDrop(d._text, DragDropEffects.Copy); } textBox1.Tag = null; //注意,这里要还原变量,否则无休止托放 } 扫一扫加作者微信
参考文档:
C# 模拟VisualStudio窗体设计器拖放控件 MDI程序子窗体的拖放功能(Drag,Drop) C#.NET TreeView拖拽功能(Drag,Drop) C#拖放技术(Drop&Drag)相关方法和事件 C#操作Excel合并多个Excel文件 C# RichTextbox中插入图片 C#.Net COM交操作性 - 强类型RCW和弱类型CCW详解 C#.NET 监视操作系统打开程序(使用Window消息实现全局系统勾子) C#文件拖放操作(DragDrop File) C# 判断操作系统是专业版、家庭版、企业版、教育版(原创) C# Winform 拖放图片文件到界面 C#多数据库组件包支持MSSQL+Oracle+MySQL+用户操作手册|C/S框架网 C#ResultMonitor类,在TextBox组件显示操作接口 IniFile 操作INI文件类 C# C# 调用Process.Start 请求的操作需要提升解决方案
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |