Simple wpf app here:
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 (omitting using)
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btn_OnClick(object sender, RoutedEventArgs e)
{
var sb = new StringBuilder();
for (int i = 0; i < 90009; i++)
sb.AppendLine($"{i}");
txt.Text = sb.ToString();
}
private void btn2_OnClick(object sender, RoutedEventArgs e)
{
var sb = new StringBuilder();
for (var i = 1; i < 7; i++)
sb.AppendLine(txt.GetLineText(150 * i).Trim());
for (var i = 1; i < 7; i++)
sb.AppendLine(txt.GetLineText(15000*i).Trim());
txt.Text = sb.ToString();
}
}
Run. Click "Fire 1!", then "Fire 2!".
Expected result:
150 300 450 600 750 900 15000 30000 45000 60000 75000 90000
But obtain:
150 300 450 600 750 900 15001 30002 45003 60004 75004 90005
Checked on MSVS 2017, .net 4.6.1, .net 4.6, .net 4.5.2, .net 4.5, .net 4. Any workarounds?
Any workarounds?
You could get the lines from the string
returned from the Text
property:
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();
}