如何:在 Windows 窗体 RichTextBox 控件中启用拖放操作

管理员 623 次浏览

摘要: 如何:在 Windows 窗体 RichTextBox 控件中启用拖放操作

博客来源于:讯杰设计网:http://blogs.51diysoft.com/blogs

如何:在 Windows 窗体 RichTextBox 控件中启用拖放操作

.NET Framework (current version) 

通过处理 DragEnter 和 DragDrop 事件,在 Windows 窗体 RichTextBox 控件中进行拖放操作。 因此,在 RichTextBox 控件中进行拖放操作是非常简单的。

在 RichTextBox 控件中实现拖动操作

  1. 将 RichTextBox 控件的 AllowDrop 属性设置为 true

  2. 在 DragEnter 事件的事件处理程序中编写代码。 使用 if 语句来确保要拖动的数据为可接受的类型(本例为文本)。 DragEventArgs.Effect 属性可以设置为 DragDropEffects 枚举的任何值。

    C#C++VB

    private void richTextBox1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.Text)) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; }

    (Visual C# 和 Visual C++)将以下代码放在窗体构造函数中以注册事件处理程序。

    C#C++

    this.richTextBox1.DragEnter += new System.Windows.Forms.DragEventHandler (this.richTextBox1_DragEnter);
  3. 编写代码以处理 DragDrop 事件。 使用 DataObject.GetData 方法来检索要拖动的数据。

    在下面的示例中,代码会将 RichTextBox 控件的 Text 属性设置为等于要拖动的数据。 如果 RichTextBox 控件中已有文本,拖动的文本将插入到插入点。

    C#C++VB

    private void richTextBox1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e) { int i; String s; // Get start position to drop the text. i = richTextBox1.SelectionStart; s = richTextBox1.Text.Substring(i); richTextBox1.Text = richTextBox1.Text.Substring(0,i); // Drop the text on to the RichTextBox. richTextBox1.Text = richTextBox1.Text + e.Data.GetData(DataFormats.Text).ToString(); richTextBox1.Text = richTextBox1.Text + s; }

    (Visual C# 和 Visual C++)将以下代码放在窗体构造函数中以注册事件处理程序。

    C#C++

    this.richTextBox1.DragDrop += new System.Windows.Forms.DragEventHandler (this.richTextBox1_DragDrop);

测试应用程序中的拖放功能

  1. 保存并生成应用程序。 在运行期间,运行写字板。

    写字板是由 Windows 安装的允许拖放操作的文本编辑器。 可以通过单击“开始”按钮,选择“运行”,在“运行”对话框的文本框中键入 WordPad,然后单击“确定”来访问它。

  2. 打开写字板后,在其中键入文本字符串。 使用鼠标选择该文本,然后将所选的文本拖到 Windows 应用程序中的 RichTextBox 控件之上。

    注意,将鼠标移到 RichTextBox 控件上(并因此引发 DragEnter 事件)时,鼠标指针会改变,可以将所选的文本放入 RichTextBox 控件。

    释放鼠标按钮,所选文本将放开(也就是引发 DragDrop 事件)并插入到 RichTextBox 控件中。