拖放只读富文本框

时间:2012-07-15 12:41:43

标签: c# richtextbox

我正在尝试在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;
}

1 个答案:

答案 0 :(得分: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。无需处理拖拽输入和放下事件。