1- Скопируйте и вставьте следующий код в MainWindow.xaml файл.
<Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525">
<Grid>
<Button x:Name="Button1" Width="250" Height="25" VerticalAlignment="Top" Content="Copy from RichTextBox1 to RichTextBox2"/>
<TabControl Margin="0,50,0,0">
<TabItem Header="TabItem1">
<RichTextBox x:Name="RichTextBox1">
<FlowDocument x:Name="FlowDocument1">
<Paragraph>
<Run Text="England"/>
<LineBreak/>
<Run FontWeight="Bold" Text="France"/>
<LineBreak/>
<Run Foreground="Red" Text="Germany"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
</TabItem>
<TabItem Header="TabItem2">
<Canvas x:Name="Canvas1">
<Thumb x:Name="Thumb1" Canvas.Left="0" Canvas.Top="0">
<Thumb.Template>
<ControlTemplate>
<RichTextBox x:Name="RichTextBox2" Width="400" Height="200">
<FlowDocument x:Name="FlowDocument2" FontFamily="Segoe UI" FontSize="12">
<Paragraph/>
</FlowDocument>
</RichTextBox>
</ControlTemplate>
</Thumb.Template>
</Thumb>
</Canvas>
</TabItem>
</TabControl>
</Grid>
</Window>
2- Скопируйте и вставьте следующий код в код, стоящий за файлом.
Class MainWindow
Private Sub Button1_Click(sender As Object, e As RoutedEventArgs) Handles Button1.Click
Dim myMemoryStream As New System.IO.MemoryStream
Dim FirstTextRange As New TextRange(RichTextBox1.Document.ContentStart, RichTextBox1.Document.ContentEnd)
FirstTextRange.Save(myMemoryStream, DataFormats.XamlPackage)
myMemoryStream.Position = 0
Dim myRichTextBox As New RichTextBox
myRichTextBox = CType(Thumb1.Template.FindName("RichTextBox2", Thumb1), RichTextBox)
Dim SecondTextRange As New TextRange(myRichTextBox.Document.ContentStart, myRichTextBox.Document.ContentEnd)
SecondTextRange.Load(myMemoryStream, DataFormats.XamlPackage)
End Sub
End Class
3- Запустите этот проект, выберите TabItem2 , нажмите Button1 , поймите, Копирование из RichTextBox1 в RichTextBox2 успешно выполнено.
Мой вопрос здесь;
Запустите этот проект еще раз, выберите TabItem1 , нажмите Button1 , увидите эту ошибку: https://prnt.sc/mwjijx
Как видите,
Если выбран TabItem2 , то ошибки нет,
Если выбран TabItem1 , то возникает ошибка.