C# 在 RichTextBox 中拖放文本

M. *_*age 3 c# drag-and-drop richtextbox winforms

我有,我希望用户能够拖拽文本(C#项目,即移动文本)一个RichTextBox在WinForm的。

我找到了许多示例,展示了如何将某些内容拖放到 RichTextBox 上,但是当 RichTextBox 既是拖放源又是拖放目标时,我没有成功地让它们工作。

我该怎么做?

以下是我迄今为止的非工作尝试。

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        this.richTextBox1.AllowDrop = true;
        this.richTextBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.richTextBox1_DragEnter);
        this.richTextBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.richTextBox1_DragDrop);
    }

    private void richTextBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) {
        if (e.Data.GetDataPresent(DataFormats.Rtf))
            e.Effect = DragDropEffects.Move;
        else
            e.Effect = DragDropEffects.None;
    }
    private void richTextBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) {
        int i;
        String s;

        i = richTextBox1.SelectionStart;
        s = richTextBox1.Text.Substring(i);
        richTextBox1.Text = richTextBox1.Text.Substring(0, i);

        richTextBox1.Text = richTextBox1.Text +
           e.Data.GetData(DataFormats.Text).ToString();
        richTextBox1.Text = richTextBox1.Text + s;
    }
}
Run Code Online (Sandbox Code Playgroud)

M. *_*age 5

好吧,我发现自己解决了这个问题:

public partial class Form1 : Form {
    public Form1() {
        InitializeComponent();
        richTextBox1.EnableAutoDragDrop = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

仅此而已。

我的第一次尝试是基于 MSDN 文档:http : //msdn.microsoft.com/en-us/library/aa984395 ( v= vs.71).aspx,但它似乎坏了。