我在多行texbox中执行复制和粘贴操作。粘贴方法在正常情况下效果很好但每当我单击Enter键(返回键)然后粘贴剪贴板内容时它只是附加文本,文本之间没有空格或新行。
代码背后:
private async void PasteButton_Click(object sender, RoutedEventArgs e)
{
DataPackageView dataPackageView = Clipboard.GetContent();
if (dataPackageView.Contains(StandardDataFormats.Text))
{
try
{
string TextCopied = await dataPackageView.GetTextAsync();
var selectionIndex = MainTextBox.SelectionStart;
MainTextBox.Text = MainTextBox.Text.Insert(selectionIndex, TextCopied);
MainTextBox.SelectionStart = selectionIndex + TextCopied.Length;
MainTextBox.Focus(FocusState.Pointer);
}
catch (Exception ex)
{
MessageDialog md = new MessageDialog(ex.Message);
await md.ShowAsync();
}
}
}
XAML:
<TextBox Name="MainTextBox" AcceptsReturn="True" Padding="5,5,15,5" BorderThickness="0" ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto" TextChanged="MainTextBox_TextChanged"/>
例如: 我想要实现的是: 第一行文字。
第二行文字
我得到的是: 第一行文本。第二行文本。
答案 0 :(得分:0)
我遇到的麻烦。
当然,SelectionStart
是TextBox中的插入符号位置。但是TextBox将'\r\n'
视为一个整体,字符串类型将其视为两个单独的char。
因此,想要使用substring()
,您必须找到给定SelectionStart
的真实索引。