scrollviewer中的文本框删除wpf中过时的行

问题描述 投票:0回答:1

我还是 wpf 新手,所以请耐心等待。

我有一个

GroupBox
来处理我的日志记录。它的内部是用于滚动的
ScrollViewer 
和用于包含日志记录的
TextBox
。我想要的是,在一定数量的行中,我想要
delete
行的最上面部分,以便文本框不会被所有日志信息淹没。我只是想知道是否有办法解决这个问题,或者我是否遗漏了一些信息。

          <GroupBox Header="Logs" Grid.Row="0" Height="300" >
              <ScrollViewer x:Name="LogScrollViewer" CanContentScroll="True" 
                        HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" >
                  <TextBox x:Name="LogTextBox" IsReadOnly="True"
                              AcceptsReturn="True" TextWrapping="Wrap"/>
              </ScrollViewer>
          </GroupBox>

我确实尝试在 xaml.cs 中使用下面 Gemini 向我提出的解决方案,但它不断在 LogTextBox.Lines 返回错误 CS1061,我不知道我是否缺少任何依赖项,或者我做错了什么或者这从一开始就是一个错误的方法。

        if (LogTextBox.LineCount > 300)
        {
            string[] lines = LogTextBox.Lines;

            string[] trimmedLines = new string[300];
            Array.Copy(lines, lines.Length - 300, trimmedLines, 0, 300);

            LogTextBox.Lines = trimmedLines;
        }

c# wpf xaml textbox
1个回答
0
投票

WPF

TextBox
具有属性 MaxLines,因此您可以限制最大行数。 这是具有此属性的代码示例:

<TextBox x:Name="LogTextBox" MaxLines="300" IsReadOnly="True"
                          AcceptsReturn="True" TextWrapping="Wrap"/>

但是如果你在

Height
上设置
TextBox
属性,那么
MaxLines
将被忽略,所以这是使用属性
Height

限制行数的第二种方法
© www.soinside.com 2019 - 2024. All rights reserved.