RichTextBox DragDrop表现怪异

好,所以我有一个RichTextBox,希望能够拖放到其中。在拖放事件内部,我想执行更改Richtextbox文本的代码,从而激活文本更改事件。但是,我只希望激活文本更改事件内的某些代码,所以我有一个变量块,当为true时,文本更改事件内的代码将不会激活。在这里:

public Form1()
        {
            InitializeComponent();
            richTextBox1.AllowDrop = true;
            richTextBox1.DragDrop += new DragEventHandler(rtbDragDrop);
            richTextBox1.DragEnter += new DragEventHandler(rtbDragEnter);
        }
        private bool block;
        private void richTextBox1_TextChanged(object sender,EventArgs e)
        {
            if (block) return;
            MessageBox.Show("Text Changed Called");
        }
        private void rtbDragDrop(object sender,DragEventArgs e)
        {
            block = true;
            richTextBox1.AppendText("hello");
            block = false;
        }
        private void rtbDragEnter(object sender,DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
                e.Effect = DragDropEffects.Copy;
        }

        private void Form1_DragDrop(object sender,DragEventArgs e)
        {
            block = true;
            richTextBox1.AppendText("hello");
            block = false;
        }

        private void Form1_DragEnter(object sender,DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.FileDrop))
                e.Effect = DragDropEffects.Copy;
        }

但是,仍会调用文本更改的代码。这是因为在出于某些原因触发文本更改事件之前,将block设置为false。 但是,令我感到困惑的部分是FORM拖放功能还不错(与设计器一起添加)。仅richtextbox拖放会导致此问题。为什么?

ab7788989 回答:RichTextBox DragDrop表现怪异

@Jimi找到了解决方法。使用BeginInvoke重置阻止。

本文链接:https://www.f2er.com/2807503.html

大家都在问