| |
VB.NET - Ein- und UmsteigerMehrere RTF Texte in einer RichTextBox zusammenfassen | | | Autor: Jenpet | Datum: 24.07.15 09:34 |
| Hallo,
ich habe ein Problem mit mehreren RTF Texten, die zu einem großen RTF Text in einer RichTextBox zusammengefasst werden sollen.
Eigentlich wollte ich in eine fertige Anwendung nur eine Funktion erstellen, die RTF Texte zusammenfasst, damit diese nicht einzeln ausgegeben werden müssen.
Ich habe im Internet zwar eine Lösung gefunden, die auch in meiner Testanwendung wunderbar funktioniert hat, aber in der richtigen Anwendung wirft die Funktion die Fehlermeldung aus:
{System.Threading.ThreadStateException: Für den aktuellen Thread muss der STA-Modus (Single Thread Apartment) festgelegt werden, bevor OLE-Aufrufe ausgeführt werden können.
Hier ist der Abschnitt aus meinem Code:
Dim rtbTmp As New RichTextBox ' Temporary Rich Text Box
Dim datobj As New System.Windows.Forms.DataObject
Dim counter = 0
For Each element As String In array
If Not String.IsNullOrEmpty(element) Then
'txtContrl.Append(element, StringStreamType.RichTextFormat,
' AppendSettings.StartWithNewParagraph)
If counter = 0 Then
rtbTmp.Rtf = caption ' Copy RichTextBox1 into rtbTmp
rtbTmp.AppendText(vbCrLf) ' Leerzeile nach Überschrift
datobj.SetData(DataFormats.Rtf, element) ' Copy
' RichTextBox2 to the Clipboard
Clipboard.SetDataObject(datobj)
rtbTmp.SelectionStart = rtbTmp.TextLength
rtbTmp.Paste()
counter = counter + 1
Else
' Paste RichTextBox2's copied text to the end of _
Temporary Rich Text Box
datobj.SetData(DataFormats.Rtf, element)
Clipboard.SetDataObject(datobj)
rtbTmp.SelectionStart = rtbTmp.TextLength
rtbTmp.Paste()
' Copy combined contents of Temporary Rich Text Box to
' the clipboard
End If
End If
Next Das hat in meiner Test-Konsolenanwendung wunderbar funktioniert.
Das Problem ist, ich kann die fertige Anwendung nicht auf Single Thread stellen.
Ich habe versucht nur mit den RichTextBox befehlen copy und paste zu arbeiten, aber entweder mache ich da etwas falsch, oder die sind ohne das Clipboard und den Dataset nicht alleine für das Zusammenfassen von Texten zu gebrauchen.
Jetzt wollte ich fragen, ob es eine andere (bessere) Lösung gibt, wie ich RTF Texte so einfach zusammenfassen kann, ohne dass ich das Clipboard verwende und ohne, dass ich die Anwendung auf Single Thread stelle.
Danke im Voraus für die Antwort!
Beitrag wurde zuletzt am 24.07.15 um 09:41:43 editiert. | |
Re: Mehrere RTF Texte in einer RichTextBox zusammenfassen | | | Autor: Jenpet | Datum: 24.07.15 12:08 |
| Ich glaube ich habe schon eine Lösung entdeckt.
Statt die Werte irgendwo zwischen zu speichern, verwende ich eine 2. Textbox und setzte den gesamten Text aus der 2. Textbox hinter den Text der 1. Textbox. | |
Re: Mehrere RTF Texte in einer RichTextBox zusammenfassen | | | Autor: effeff | Datum: 24.07.15 22:39 |
| Warum gehst Du über das Clipboard und holst Deine Daten nicht direkt rein?
EALA FREYA FRESENA | |
Re: Mehrere RTF Texte in einer RichTextBox zusammenfassen | | | Autor: Jenpet | Datum: 27.07.15 10:33 |
| Brauche ich nicht eine zweite Rich Text Box, um die Texte korrekt zusammen zu fügen?
Ich habe das jetzt so gemacht und es scheint zu funktionieren:
If counter = 0 Then
rtbTmp.Rtf = caption ' Copy RichTextBox1 into rtbTmp
rtbTmp.AppendText(vbCrLf)
rtbTmp.SelectionStart = rtbTmp.TextLength
counter = counter + 1
End If
rtbCache.Rtf = element
rtbCache.SelectAll()
rtbCache.Copy()
rtbTmp.Paste()
rtbTmp.SelectionStart = rtbTmp.TextLength
rtbTmp.AppendText(vbCrLf)
rtbCache.Clear() Wäre es auch Möglich, die Daten direkt in die RTBox zu kriegen, ohne eine zweite zu verwenden? | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats Neu! sevPopUp 2.0
Dynamische Kontextmenüs!
Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|