UWP - 无法在当前光标位置粘贴文本

时间:2015-11-12 13:00:35

标签: uwp

我在多行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"/>

例如: 我想要实现的是: 第一行文字。

第二行文字

我得到的是: 第一行文本。第二行文本。

1 个答案:

答案 0 :(得分:0)

我遇到的麻烦。

当然,SelectionStart是TextBox中的插入符号位置。但是TextBox将'\r\n'视为一个整体,字符串类型将其视为两个单独的char。

因此,想要使用substring(),您必须找到给定SelectionStart的真实索引。