【发布时间】:2023-03-29 23:37:01
【问题描述】:
我有以下简单的代码,我只想加载一个文本文件 (文件大小为 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
【问题讨论】:
-
我认为速度慢与
RichTextBox和ScrollViewer无关。您可能需要检查“调试输出”是否有任何绑定/加载错误。