Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Operacje przeciągania i upuszczania za pomocą kontrolki „Windows Forms” RichTextBox są wykonywane przez obsługę zdarzeń DragEnter i DragDrop. W związku z tym operacje przeciągania i upuszczania są niezwykle proste dzięki kontrolce RichTextBox.
Aby włączyć operacje przeciągania w kontrolce RichTextBox
Ustaw właściwość AllowDrop kontrolki RichTextBox na wartość
true.Napisz kod w obsłudze zdarzenia DragEnter. Użyj instrukcji
if, aby upewnić się, że przeciągane dane są akceptowalnym typem (w tym przypadku tekstem). Właściwość DragEventArgs.Effect można ustawić na dowolną wartość wyliczenia 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 Subprivate 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# i Visual C++) Umieść następujący kod w konstruktorze formularza, aby zarejestrować procedurę obsługi zdarzeń.
this.richTextBox1.DragEnter += new System.Windows.Forms.DragEventHandler (this.richTextBox1_DragEnter);this->richTextBox1->DragEnter += gcnew System::Windows::Forms::DragEventHandler (this, &Form1::richTextBox1_DragEnter);Napisz kod do obsługi zdarzenia DragDrop. Aby pobrać dane, które są przeciągane, użyj metody DataObject.GetData.
W poniższym przykładzie kod ustawia właściwość Text kontrolki RichTextBox równą przeciąganym danym. Jeśli w kontrolce RichTextBox znajduje się już tekst, przeciągnięty tekst zostanie wstawiony w punkcie wstawiania.
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 Subprivate 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# i Visual C++) Umieść następujący kod w konstruktorze formularza, aby zarejestrować procedurę obsługi zdarzeń.
this.richTextBox1.DragDrop += new System.Windows.Forms.DragEventHandler (this.richTextBox1_DragDrop);this->richTextBox1->DragDrop += gcnew System::Windows::Forms::DragEventHandler (this, &Form1::richTextBox1_DragDrop);
Aby przetestować funkcję przeciągania i upuszczania w aplikacji
Zapisz i skompiluj aplikację. Gdy jest uruchomiony, uruchom program WordPad.
WordPad to edytor tekstów zainstalowany przez system Windows, który umożliwia operacje przeciągania i upuszczania. Jest on dostępny, klikając przycisk
Uruchom , wybierając pozycjęUruchom , wpisującw polu tekstowym okna dialogowego Uruchom , a następnie klikając przycisk OK .Po otwarciu programu WordPad wpisz w nim ciąg tekstu. Za pomocą myszy zaznacz tekst, a następnie przeciągnij zaznaczony tekst do kontrolki RichTextBox w aplikacji systemu Windows.
Zwróć uwagę, że po umieszczeniu kursora myszy na kontrolce RichTextBox (i w związku z tym wywołaniu zdarzenia DragEnter), wskaźnik myszy zmienia się i można przenieść zaznaczony tekst do kontrolki RichTextBox.
Po zwolnieniu przycisku myszy zaznaczony tekst zostanie porzucony (czyli zostanie podniesione zdarzenie DragDrop) i zostanie wstawiony w kontrolce RichTextBox.
Zobacz także
- RichTextBox
- Instrukcje: wykonywanie operacji przeciągania i upuszczania między aplikacjami
- Kontrolka RichTextBox
- Elementy sterujące do użycia w formularzach Windows
.NET Desktop feedback