3

我正在尝试在 RichTextBox(Windows 通用控件)中实现拖放功能。使用下面显示的代码可以正常工作。但是,当我将 ReadOnly 属性设置为 true 时,不会触发拖放事件。有什么我想念的吗?还是那是正确的行为?请指教。

private void rtb_dragdrop(object sender, DragEventArgs e)
{
    Console.WriteLine("Test");       
}

private void rtb_dragenter(object sender, DragEventArgs e)
{
    e.Effect = DragDropEffects.Copy;
}
4

1 回答 1

3

显然,在 RichTextBox 中将 ReadOnly 属性设置为 true 将关闭执行拖放操作的能力。

一个模仿只读 RichTextBox的简单技巧:

public partial class Form1 : Form {

  public Form1() {
    InitializeComponent();
    rtb.EnableAutoDragDrop = true;
    rtb.KeyDown += new KeyEventHandler(rtb_KeyDown);
  }

  void rtb_KeyDown(object sender, KeyEventArgs e) {
    e.SuppressKeyPress = true;
  }
}

现在,您的拖放操作应该会在EnabledAutoDragDrop属性设置为 true 的情况下自动运行。无需处理那些拖放事件。

于 2012-07-15T15:35:32.383 回答