vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Mehrere 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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