HOW TO:啟用 Windows Form RichTextBox 控制項的拖放作業
含 Windows Form RichTextBox 控制項的拖放作業,是藉由處理 DragEnter 和 DragDrop 事件完成的。 因此,使用 RichTextBox 控制項進行拖放作業是非常簡單的。
若要啟用 RichTextBox 控制項中的拖曳作業
將 RichTextBox 控制項的 AllowDrop 屬性設定為 true。
在 DragEnter 事件的事件處理常式中寫入程式碼。 使用 if 陳述式來確保拖曳的資料是屬於可接受的型別 (在這個情況中就是文字)。 DragEventArgs.Effect 屬性可以設定為 DragDropEffects 列舉型別的任何一個值。
Private Sub RichTextBox1_DragEnter(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DragEventArgs) _ Handles RichTextBox1.DragEnter If (e.Data.GetDataPresent(DataFormats.Text)) Then e.Effect = DragDropEffects.Copy Else e.Effect = DragDropEffects.None End If End Sub
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; }
private: void richTextBox1_DragEnter(System::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++) 將下列程式碼加入表單的建構函式以註冊事件處理常式。
this.richTextBox1.DragEnter += new System.Windows.Forms.DragEventHandler (this.richTextBox1_DragEnter);
this->richTextBox1->DragEnter += gcnew System::Windows::Forms::DragEventHandler (this, &Form1::richTextBox1_DragEnter);
撰寫用來處理 DragDrop 事件的程式碼。 使用 DataObject.GetData 方法擷取正拖放的資料。
在以下的範例中,程式碼將 RichTextBox 控制項的 Text 屬性設定為和正拖曳的資料相等。 如果 RichTextBox 控制項已經含有文字,則所拖曳的文字會從插入點插入。
Private Sub RichTextBox1_DragDrop(ByVal sender As Object, _ ByVal e As System.Windows.Forms.DragEventArgs) _ Handles RichTextBox1.DragDrop Dim i As Int16 Dim s As String ' 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 End Sub
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; }
private: System::Void richTextBox1_DragDrop(System::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. String ^str = String::Concat(richTextBox1->Text, e->Data ->GetData(DataFormats->Text)->ToString()); richTextBox1->Text = String::Concat(str, s); }
(Visual C# 和 Visual C++) 將下列程式碼加入表單的建構函式以註冊事件處理常式。
this.richTextBox1.DragDrop += new System.Windows.Forms.DragEventHandler (this.richTextBox1_DragDrop);
this->richTextBox1->DragDrop += gcnew System::Windows::Forms::DragEventHandler (this, &Form1::richTextBox1_DragDrop);
若要測試應用程式中的拖放功能
儲存並建置 (Build) 您的應用程式。 當其執行時,開啟 WordPad。
WordPad 是 Windows 安裝的文字編輯器,允許拖放作業。 若要加以存取,可按一下 [開始] 按鈕,選取 [執行],然後在 [執行] 對話方塊的文字方塊中輸入 WordPad,再按 [確定]。
一旦 WordPad 開啟後,請在其中輸入一串文字。 使用滑鼠選取該段文字,然後將所選文字拖曳至 Windows 應用程式中的 RichTextBox 控制項。
請注意,當您將滑鼠指向 RichTextBox 控制項 (並因此引發 DragEnter 事件) 時,滑鼠指標會變更,而您就可將選取的文字置放在 RichTextBox 控制項中。
當您放開滑鼠按鈕,選取的文字便會拖曳 (亦即,引發 DragDrop 事件) 並插入 RichTextBox 控制項中。