Sdílet prostřednictvím


Postupy: Povolení operací přetažení myší pomocí ovládacího prvku Windows Forms RichTextBox

Operace přetažení pomocí ovládacího prvku model Windows Forms RichTextBox se provádějí zpracováním DragEnter událostí a DragDrop událostí. Operace přetažení jsou tedy s ovládacím RichTextBox prvek velmi jednoduché.

Povolení operací přetažení v ovládacím prvku RichTextBox

  1. AllowDrop Nastavte vlastnost RichTextBox ovládacího prvku na truehodnotu .

  2. Napište kód v obslužné rutině DragEnter události události. if Pomocí příkazu se ujistěte, že přetahovaná data mají přijatelný typ (v tomto případě text). Vlastnost DragEventArgs.Effect lze nastavit na libovolnou hodnotu výčtu 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# a Visual C++) Do konstruktoru formuláře umístěte následující kód pro registraci obslužné rutiny události.

    this.richTextBox1.DragEnter += new  
        System.Windows.Forms.DragEventHandler  
        (this.richTextBox1_DragEnter);  
    
    this->richTextBox1->DragEnter += gcnew  
       System::Windows::Forms::DragEventHandler  
       (this, &Form1::richTextBox1_DragEnter);  
    
  3. Napište kód pro zpracování DragDrop události. Použijte metodu DataObject.GetData k načtení přetahovaných dat.

    V následujícím příkladu kód nastaví Text vlastnost RichTextBox ovládacího prvku, který se rovná přetahování dat. Pokud ovládací prvek už obsahuje text RichTextBox , vloží se přetažený text do místa vložení.

    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# a Visual C++) Do konstruktoru formuláře umístěte následující kód pro registraci obslužné rutiny události.

    this.richTextBox1.DragDrop += new  
        System.Windows.Forms.DragEventHandler  
        (this.richTextBox1_DragDrop);  
    
    this->richTextBox1->DragDrop += gcnew
       System::Windows::Forms::DragEventHandler  
       (this, &Form1::richTextBox1_DragDrop);  
    

Otestování funkcí přetažení v aplikaci

  1. Uložte a sestavte aplikaci. V době, kdy běží, spusťte WordPad.

    WordPad je textový editor nainstalovaný systémem Windows, který umožňuje operace přetažení myší. Je přístupná kliknutím na tlačítko Start, výběrem možnosti Spustit, zadáním WordPad textového pole dialogového okna Spustit a následným kliknutím na tlačítko OK.

  2. Jakmile je WordPad otevřený, zadejte do něj řetězec textu. Pomocí myši vyberte text a přetáhněte vybraný text na RichTextBox ovládací prvek v aplikaci pro Windows.

    Všimněte si, že když najeďte myší na RichTextBox ovládací prvek (a v důsledku toho DragEnter vyvoláte událost), změní se ukazatel myši a vybraný text můžete do RichTextBox ovládacího prvku vložit.

    Když uvolníte tlačítko myši, vybraný text se zahodí (tj DragDrop . vyvolá událost) a vloží se do RichTextBox ovládacího prvku.

Viz také