好,所以我有一个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拖放会导致此问题。为什么?