我有以下简单的代码,我只想加载文本文件 (具有82KB和4000行的文件)到RichTextBox中。但每当我使用ScrollViewer加载时需要相当长的时间,我想使用ScrollViewer,因为我想滚动到文档中的特定位置并同步滚动两个RichTextBox(一起)。任何解决方案?
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
string text = System.IO.File.ReadAllText(@"C:\Users\sss\Desktop\WriteLines.txt");
Paragraph p = new Paragraph();
Run run = new Run(text) { Foreground = new SolidColorBrush(Color.FromRgb(75, 74, 77)) };
p.Inlines.Add(run);
richTextBox1.Document.Blocks.Add(p);
}
}
}
//慢
<Window x:Class="WpfApplication1.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>
<ScrollViewer Grid.Row="1" Name="scrolBase" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<RichTextBox HorizontalAlignment="Left" Name="richTextBox1" VerticalAlignment="Top" IsReadOnly="True" ScrollViewer.VerticalScrollBarVisibility="Auto"
Width="500"
ScrollViewer.HorizontalScrollBarVisibility ="Auto"
>
<FlowDocument PageWidth="1000" />
</RichTextBox>
</ScrollViewer>
</Grid>
</Window>
//快速
<Window x:Class="WpfApplication1.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>
<RichTextBox HorizontalAlignment="Left" Name="richTextBox1" VerticalAlignment="Top" IsReadOnly="True" ScrollViewer.VerticalScrollBarVisibility="Auto"
Width="500"
ScrollViewer.HorizontalScrollBarVisibility ="Auto"
>
<FlowDocument PageWidth="1000" />
</RichTextBox>
</Grid>
</Window>
昨天我问了一个类似的问题,
In WPF RichTextBox takes too long to Load when there is no height
答案 0 :(得分:1)
为什么不使用RichTextBox的滚动条?设置VerticalScrollBarVisibility="Visible"
您可以使用RichTextBox类提供的不同Scroll(ScrollToEnd(),ScrollToVerticalOffset()等)方法。
答案 1 :(得分:1)
我知道WPF在控件中处理大型数据集并不是最好的。也许这是因为scrollviewer允许richtextbox完整地渲染自己,但是当richtextbox的高度是有限的高度时,它只呈现它需要的东西?我同意Michael G - 您是否尝试过使用richTextBox中的垂直滚动?这可以更好地测试大量数据...