共用方式為


HOW TO:啟用 Windows Form RichTextBox 控制項的拖放作業

含 Windows Form RichTextBox 控制項的拖放作業,是藉由處理 DragEnterDragDrop 事件完成的。 因此,使用 RichTextBox 控制項進行拖放作業是非常簡單的。

若要啟用 RichTextBox 控制項中的拖曳作業

  1. RichTextBox 控制項的 AllowDrop 屬性設定為 true。

  2. 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);
    
  3. 撰寫用來處理 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);
    

若要測試應用程式中的拖放功能

  1. 儲存並建置 (Build) 您的應用程式。 當其執行時,開啟 WordPad。

    WordPad 是 Windows 安裝的文字編輯器,允許拖放作業。 若要加以存取,可按一下 [開始] 按鈕,選取 [執行],然後在 [執行] 對話方塊的文字方塊中輸入 WordPad,再按 [確定]。

  2. 一旦 WordPad 開啟後,請在其中輸入一串文字。 使用滑鼠選取該段文字,然後將所選文字拖曳至 Windows 應用程式中的 RichTextBox 控制項。

    請注意,當您將滑鼠指向 RichTextBox 控制項 (並因此引發 DragEnter 事件) 時,滑鼠指標會變更,而您就可將選取的文字置放在 RichTextBox 控制項中。

    當您放開滑鼠按鈕,選取的文字便會拖曳 (亦即,引發 DragDrop 事件) 並插入 RichTextBox 控制項中。

請參閱

工作

HOW TO:在應用程式間執行拖放作業

參考

RichTextBox

其他資源

RichTextBox 控制項 (Windows Form)

在 Windows Form 上使用的控制項