Finns det något sätt som man kan concatinera två RichTextBox till en ny utan att använda copy-past funktionerna. Du skjuter ganska vilt från höften Patrik. Tja kanske Benny, eh, Enligt http://www.dotnetforums.net/showthread.php?t=72428 så ska det finnas null tecken (gissar att det är asciitecken 0 de refererar till) i sluet på en rtf-sträng. Så om du kör en replace på ascii 0 till ingenting så kanske det fungerar.... Förlåt, det var inte meningen att vara otrevlig! Jupp det funkar, men det borde ju finnas en "snyggare" lösning på problemet. <code> Jag skulle tippa på att Mikaels lösning skulle fungera, men se då till att den box du använder för att klippa ihop i är gömd eller något ;) Jo jag skall trycka ihop en hel hög dokument dynamiskt. Jag hade hoppats att det fanns något bra sätt att göra det på utan att behöva hålla på med stränghantering etc. Men antagligen så är det ingen på Microsoft som tänkte att man möjligen ville sätta samman rtf-dokument :( Benny, Jo då designen är ju inte så svår. Man överlagrar ju givetvis ;) Så får man en kontrol som funkar som man vill! Jag hade valt att inte behöva skicka textboxen... Min implementation ser igentligen ut så här. Så kan man skicka vad man vill! Men tänkte inte att jag behövde skicka med allt ;) Benny,concat rtf
<code>
'Finns det något bättre sätt?
RichTextBox1.SelectAll()
RichTextBox1.Copy()
RichTextBox3.Paste()
RichTextBox2.SelectAll()
RichTextBox2.Copy()
RichTextBox3.Paste()
</code>
/BennySv: concat rtf
Nej inte ett enda rätt där inte :(
Om det skulle vara något skulle det vara
<code>
'Fel!!!
RichTextBox3.Rtf = RichTextBox1.Rtf + RichTextBox2.Rtf
</code>
Men det sätter inte ihop rtf-texterna till en ny!
/BennySv: concat rtf
Imports System.Text
Dim MergedText As StringBuilder = New StringBuilder()
With MergedText
.Append(RichTextBox1.Rtf)
.Append(RichTextBox2.Rtf)
End With
RichTextBox3.Rtf = MergedText.ToString()
Sv: concat rtf
Och tanken slog dig inte att beskriva vad det är som blir fel? =P
<b>Edit: </b> Benny tog mig en titt på de Kunskaper du anget i din profil - det kan inte vara så att de kanske var lite tillhöftade? 5a i VB.NET ? Personligen bryr jag mig inte om vad du angett där, men för att vi som hjälper till här skall veta på vilken nivå man kan lägga svaren på, så är det bra om man svarat så bra som möjligt på kunskaperna.Sv: concat rtf
rent tekniskt så skall den sätta ihop det till en ny? Text är immutable så när man gör så där så skapas det ett helt nytt objekt?Sv: concat rtf
EDIT: nä, det funkade ju inte, men om man editerar rtf:en funkar det kanske bätre
Dim test As String = richTextBox1.Rtf.Substring(0, richTextBox1.Rtf.Length - 4)
test += richTextBox2.Rtf.Substring(6)
richTextBox3.Rtf = test
Sv: concat rtf
Men om du provar att sätta samman utdata (.rtf) från två richtextbox med + eller & så blir det inte samma resultat som i exemplet som jag angav från början. Sv: concat rtf
Tackar Johan Bovin.
/BennySv: concat rtf
RichTextBox3.Select(RichTextBox3.Text.Length, 0)
RichTextBox3.SelectedRtf = RichTextBox2.Rtf
</code>
/mickeSv: concat rtf
Saken är att rtf som format börjar med en "stilmall" och sedan kommer texten. Det blir lite krock om man bara trycker ihop två rtf-dokument ;)Sv: concat rtf
Sv: concat rtf
Jo? Får en känsla av att du tänker lite för kort. Ta koden och skapa en metod (sub) som t.ex tar emot två rtfkontroll-objekt parametrar och som utför koden ovan. Då kan du juh återanvända den om och om igen. Eller skriv en metod som tar några andra paramterar som gör att du kan göra sin sammanslagning så enkelt som möjligt. Du har verktyget för ett enkelt slå ihop två dokument (stränghanteringen är väl inga bekymmer?), nu behöver du skrida till verket och förenkla processen att genomföra sammanslagningen mellan en rad olika kontroller.
Hoppas det löser sig =)Sv: concat rtf
<code>
Public Class bjRichTextBox
Inherits System.Windows.Forms.RichTextBox
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'UserControl overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
components = New System.ComponentModel.Container()
End Sub
#End Region
Public Sub addRtf(ByVal rtbToAdd As RichTextBox)
Me.Select(Me.Text.Length, 0)
Me.SelectedRtf = rtbToAdd.Rtf
End Sub
End Class
</code>
Sv: concat rtf
Public Sub addRtf(ByVal rtbToAdd As String)
/micke Sv: concat rtf
<code>
Public Sub addRtf(ByVal rtbToAdd As RichTextBox)
addRtf(rtbToAdd.Rtf)
End Sub
Public Sub addRtf(ByVal strToAdd As String)
Try
Me.Select(Me.Text.Length, 0)
Me.SelectedRtf = strToAdd
Catch ex As Exception
End Try
End Sub
</code>Sv: concat rtf
Toppen, då har du en lösning som fungerar =) Tänk på att markera dina inlägg som "lösta" eller "stängde" beroende på statusen av tråden när du är klar med den.