【问题标题】:WPF ScrollViewer Slow To Load With RichTextBoxWPF ScrollViewer 使用 RichTextBox 加载缓慢
【发布时间】: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

【问题讨论】:

  • 我认为速度慢与RichTextBoxScrollViewer 无关。您可能需要检查“调试输出”是否有任何绑定/加载错误。

标签: c# wpf


【解决方案1】:

为什么不直接使用 RichTextBox 的滚动条呢?设置VerticalScrollBarVisibility="Visible"

您可以利用RichTextBox 类提供的不同滚动(ScrollToEnd()、ScrollToVerticalOffset() 等)方法。

【讨论】:

    【解决方案2】:

    我知道 WPF 在其控件中处理大型数据集方面并不是最好的。也许这是因为scrollviewer允许richtextbox完整地呈现自己,但是当richtextbox的高度是有限的高度时,它只呈现它需要的东西?我同意 Michael G - 您是否尝试过在richTextBox 中使用垂直滚动?对于大量数据,这可能会更好地测试...

    【讨论】:

      猜你喜欢
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多