c#WPF文本框在按索引检索行时出现错误?

c#WPF文本框在按索引检索行时出现错误?,c#,wpf,textbox,C#,Wpf,Textbox,简单wpf应用程序: MainWindow.xaml: <Window x:Class="wpf_textbox_of.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.micros

简单wpf应用程序:

MainWindow.xaml:

<Window x:Class="wpf_textbox_of.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:wpf_textbox_of"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="20"/>
            <RowDefinition Height="20"/>
        </Grid.RowDefinitions>
        <TextBox Grid.Row="0" Margin="5"  Name="txt" AcceptsReturn="True" AcceptsTab="True" />
        <Button Grid.Row="1" Content="Fire 1!" Click="btn_OnClick" />
        <Button Grid.Row="2" Content="Fire 2!" Click="btn2_OnClick" />
    </Grid>
</Window>

MainWindow.cs(省略使用)

公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
私有void btn_OnClick(对象发送方,路由目标)
{
var sb=新的StringBuilder();
对于(int i=0;i<90009;i++)
sb.AppendLine($“{i}”);
txt.Text=sb.ToString();
}
私有void btn2_OnClick(对象发送方,路由目标)
{
var sb=新的StringBuilder();
对于(变量i=1;i<7;i++)
sb.AppendLine(txt.GetLineText(150*i.Trim());
对于(变量i=1;i<7;i++)
sb.AppendLine(txt.GetLineText(15000*i.Trim());
txt.Text=sb.ToString();
}
}
跑。单击“开火1!”,然后单击“开火2!”

预期结果:

150 300 450 600 750 900 15000 30000 45000 60000 75000 90000

但获得:

150 300 450 600 750 900 15001 30002 45003 60004 75004 90005

在MSVS 2017、.net 4.6.1、.net 4.6、.net 4.5.2、.net 4.5、.net 4上检查。 有解决办法吗

有解决办法吗

您可以从
文本
属性返回的
字符串
中获取行:

private void btn2_OnClick(object sender, RoutedEventArgs e)
{
    string[] lines = txt.Text.Split(new char[] { '\n' });
    var sb = new StringBuilder();
    for (var i = 1; i < 7; i++)
        sb.AppendLine(lines[150 * i].Trim());
    for (var i = 1; i < 7; i++)
        sb.AppendLine(lines[15000 * i].Trim());
    txt.Text = sb.ToString();
}
private void btn2\u OnClick(对象发送方、路由目标方)
{
字符串[]行=txt.Text.Split(新字符[]{'\n'});
var sb=新的StringBuilder();
对于(变量i=1;i<7;i++)
sb.AppendLine(行[150*i].Trim());
对于(变量i=1;i<7;i++)
sb.AppendLine(行[15000*i].Trim());
txt.Text=sb.ToString();
}

看着它,我觉得这是wpf文本框中一个从未修复的错误。这太令人失望了。
private void btn2_OnClick(object sender, RoutedEventArgs e)
{
    string[] lines = txt.Text.Split(new char[] { '\n' });
    var sb = new StringBuilder();
    for (var i = 1; i < 7; i++)
        sb.AppendLine(lines[150 * i].Trim());
    for (var i = 1; i < 7; i++)
        sb.AppendLine(lines[15000 * i].Trim());
    txt.Text = sb.ToString();
}