Wie kann ich in VB.NET 2003 markierten Text in einer RTF-Box per Maus verschieben?

Antwort

Um in VB.NET 2003 markierten Text innerhalb einer RichTextBox per Drag & Drop mit der Maus zu verschieben, musst du einige Ereignisse und Einstellungen nutzen, da die Standard-RichTextBox dieses Verhalten nicht automatisch unterstützt. Hier ist eine Schritt-für-Schritt-Anleitung: **1. RichTextBox-Eigenschaften setzen:** - `AllowDrop` auf `True` setzen. **2. Ereignisse programmieren:** Du benötigst mindestens die folgenden Ereignisse: - `MouseDown` - `MouseMove` - `DragEnter` - `DragDrop` **3. Beispielcode:** ```vb.net ' Modul-Variablen Private isDragging As Boolean = False Private dragStart As Integer ' MouseDown: Startpunkt merken Private Sub RichTextBox1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles RichTextBox1.MouseDown If e.Button = MouseButtons.Left AndAlso RichTextBox1.SelectionLength > 0 Then dragStart = RichTextBox1.GetCharIndexFromPosition(New Point(e.X, e.Y)) isDragging = True Else isDragging = False End If End Sub ' MouseMove: Drag starten Private Sub RichTextBox1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles RichTextBox1.MouseMove If isDragging AndAlso e.Button = MouseButtons.Left Then If RichTextBox1.SelectionLength > 0 Then RichTextBox1.DoDragDrop(RichTextBox1.SelectedRtf, DragDropEffects.Move) isDragging = False End If End If End Sub ' DragEnter: Effekt anzeigen Private Sub RichTextBox1_DragEnter(ByVal sender As Object, ByVal e As DragEventArgs) Handles RichTextBox1.DragEnter If e.Data.GetDataPresent(DataFormats.Rtf) Then e.Effect = DragDropEffects.Move Else e.Effect = DragDropEffects.None End If End Sub ' DragDrop: Text verschieben Private Sub RichTextBox1_DragDrop(ByVal sender As Object, ByVal e As DragEventArgs) Handles RichTextBox1.DragDrop Dim dropPoint As Point = RichTextBox1.PointToClient(New Point(e.X, e.Y)) Dim dropIndex As Integer = RichTextBox1.GetCharIndexFromPosition(dropPoint) ' Text entfernen und an neuer Stelle einfügen Dim selectedRtf As String = RichTextBox1.SelectedRtf Dim selectionStart As Integer = RichTextBox1.SelectionStart Dim selectionLength As Integer = RichTextBox1.SelectionLength ' Nur verschieben, wenn nicht in sich selbst gezogen If dropIndex < selectionStart OrElse dropIndex > selectionStart + selectionLength Then RichTextBox1.SelectedRtf = "" RichTextBox1.SelectionStart = dropIndex RichTextBox1.SelectedRtf = selectedRtf End If End Sub ``` **Hinweise:** - Der Code verschiebt den markierten Text an die neue Position. - Es wird geprüft, dass der Text nicht in sich selbst verschoben wird. - Die Formatierung bleibt erhalten, da mit `SelectedRtf` gearbeitet wird. **Weitere Infos:** - [Microsoft Dokumentation zu RichTextBox](https://learn.microsoft.com/de-de/dotnet/api/system.windows.forms.richtextbox?view=netframework-1.1) Damit kannst du markierten Text per Drag & Drop innerhalb einer RichTextBox verschieben.

KI fragen

Verwandte Fragen

Kann man in VB.NET 2003 Zeilenumbrüche, die durch RightMargin in einer RTF-Box erzeugt wurden, in echte Zeilenumbrüche umwandeln?

In VB.NET 2003 (und generell in Windows Forms) ist es so, dass der `RightMargin`-Wert einer RichTextBox lediglich die Anzeige beeinflusst: Der Text wird optisch umgebrochen, aber im zugrundeliegenden... [mehr]

Wie heißt in VB.NET 2003 der KeyCode für das Hochkomma (')?

In VB.NET 2003 entspricht das Hochkomma (Apostroph, also `'`) dem KeyCode **emQuotes**. Du kannst also in einem KeyDown- oder KeyPress-Ereignis so darauf prüfen: ```vb.net If e.KeyCode =... [mehr]

Reicht in VB.NET 2003 die TextBox-Einstellung 'AcceptReturn = False', um den Beep bei Return zu unterdrücken?

Nein, in VB.NET 2003 reicht die Einstellung `AcceptsReturn = False` bei einer TextBox nicht aus, um den Beep-Ton beim Drücken der Return-Taste (Enter) zu unterdrücken. **Erklärung:** -... [mehr]

Warum ist 'GetFirstCharIndexFromLine()' in VB.NET 2003 kein Member von RichTextBox?

Das Verhalten, das du beschreibst, ist korrekt: In **VB.NET 2003** (also .NET Framework 1.1) gibt es die Methode `GetFirstCharIndexFromLine()` für das `RichTextBox`-Steuerelement **noch nicht**.... [mehr]

Wie setze ich mit VB.NET 2003 per Button-Klick an den Anfang aller ausgewählten Zeilen einer RichTextBox ein einfaches Anführungszeichen (')?

Um in VB.NET 2003 am Anfang jeder ausgewählten Zeile in einer `RichTextBox` ein einfaches Hochkomma (`'`) einzufügen, kannst du folgenden Ansatz verwenden: 1. **Ermittle die Auswahl**:... [mehr]

Wie wandle ich in VB.NET 2003 beim Laden einer Datei mit RichTextBox.LoadFile einen UTF-8-Text in ANSI um?

In VB.NET 2003 unterstützt die Methode `RichTextBox.LoadFile` standardmäßig keine direkte Konvertierung von UTF-8 nach ANSI. Sie lädt die Datei entweder als RTF oder als reinen Te... [mehr]

Wie kopiere ich in VB.NET 2003 eine Datei in einen anderen Ordner?

In VB.NET 2003 kannst du zum Kopieren einer Datei die Methode `File.Copy` aus dem Namespace `System.IO` verwenden. Hier ein einfaches Beispiel: ```vb Imports System.IO ' Beispiel: Datei kopiere... [mehr]

Warum funktioniert die Änderung der Reihenfolge in einem ListView nach dem Sortieren in VB.NET 2003 nicht mehr?

In VB.NET 2003 (also .NET Framework 1.1) gibt es beim `ListView`-Steuerelement einige Einschränkungen im Vergleich zu späteren Versionen. Das Problem, dass nach dem Sortieren die Änderu... [mehr]

Wie ermittele ich mit VB.NET 2003 den Ordnernamen mehrerer im OpenFileDialog markierter Dateien?

Um in VB.NET 2003 den Ordnernamen mehrerer mit dem `OpenFileDialog` ausgewählter Dateien zu ermitteln, gehst du wie folgt vor: 1. Setze die Eigenschaft `Multiselect des `OpenFileDialog` auf `Tru... [mehr]

Wie kann ich in VB.NET 2003 eine ListView per OpenFileDialog (Multiselect = true) mit Name und Fullname ausgewählter Dateien füllen?

Um in VB.NET 2003 eine `ListView` mit dem Namen und dem vollständigen Pfad (FullName) der über einen `OpenFileDialog` (mit `Multiselect = True`) ausgewählten Dateien zu füllen, kan... [mehr]