C#将treeview节点拖入richtextbox的方法

我开发PLC-Recorder的时候要将treeview节点拖入richtextbox。开始是拖入textbox,没有遇到什么问题,后来想如果插入点能随着鼠标移动就好了,并且以后可能要给部分文本改变颜色,于是就选择了强大的richtextbox,不曾想richtextbox根本就没有类似于textbox那样的拖拽属性和事件。
于是百度,第一个结论是这些属性和事件隐藏了,要自己写。照猫画虎,能够拖拽了,但是,到了richtextbox后,显示禁止标志,并且不会调用richTextBox1_DragDrop()事件,网友的各种设置建议好像都不灵,经过很长的摸索,终于发现了门道:在拖拽起点时,要选择.Move效果,另外,要选择文本模式。richtextbox里不需要做任何特殊设置,就可以完美实现拖拽功能。
在这里插入图片描述
看代码吧:

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            //属性面板上没有AllowDrop属性,需要通过程序写
            richTextBox1.AllowDrop = true;
            //事件面板上没有richTextBox拖放事件,需要通过程序写事件委托
            richTextBox1.DragEnter += new DragEventHandler(richTextBox1_DragEnter);
            richTextBox1.DragDrop += new DragEventHandler(richTextBox1_DragDrop);           
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            TreeNode tn = new TreeNode();
            tn.Text = "树节点";
            treeView1.Nodes.Add(tn);
        }
        private void richTextBox1_DragDrop(object sender, DragEventArgs e)
        {
            string s1= (string)e.Data.GetData(DataFormats.Text);
            richTextBox1.SelectedText = s1;
        }

        private void richTextBox1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.Move;
        }

        private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
        {
            TreeNode tn = (TreeNode)e.Item;
            DoDragDrop(tn.Text, DragDropEffects.Move);//这个要选择文本,且用Move效果。这是最关键的地方。
        }
    }

2020年7月31日

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值