【问题标题】:RichTextBox DragDrop behaving weirdlyRichTextBox DragDrop 行为怪异
【发布时间】:2020-01-08 00:14:24
【问题描述】:

好的,所以我有一个丰富的文本框,并且希望能够拖放到其中。在拖放事件中,我想执行更改富文本框文本的代码,从而激活文本更改事件。但是,我只希望激活文本更改事件中的一些代码,所以我有一个变量块,当它为真时,文本更改事件中的代码将不会激活。这里是:

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 拖放会导致此问题。为什么?

【问题讨论】:

  • 尝试为富文本框的块变量使用不同的名称。这可能是表单和富文本框拖放之间的冲突。
  • 我刚试了一下,还是不行。即使我没有适当的表单拖动事件,这种情况仍然会发生。
  • 使用BeginInvoke()重置block。
  • 谢谢!做到了。我是 stackoverflow 的新手,如何将评论标记为答案?
  • 不幸的是,你不能,@VisualUser。但是,您可以在回答您自己的问题时解释并展示您是如何使用 Jimi 的解决方案解决问题的,并将其标记为答案。

标签: c# .net winforms drag-and-drop richtextbox


【解决方案1】:

@Jimi 找到了解决方法。就是用BeginInvoke来重置block。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-30
    • 2015-04-05
    • 2014-09-11
    • 2019-11-03
    • 2012-08-05
    • 2012-12-03
    相关资源
    最近更新 更多