【问题标题】:UWP - Unable To Paste Text in the Current Cursor PositionUWP - 无法在当前光标位置粘贴文本
【发布时间】:2016-02-29 21:19:29
【问题描述】:

我正在多行 texbox 中执行复制和粘贴操作。粘贴方法在正常情况下效果很好,但每当我单击 Enter Key(Return Key) 然后粘贴剪贴板内容时,它只是附加文本,文本之间没有空格或新行。

代码背后:

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"/>

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

第二行文字

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

【问题讨论】:

  • 您能否给出您尝试粘贴的文本、您希望看到的结果以及您实际看到的结果的最小示例?
  • 请将其添加到您的问题中,因为格式在评论中不起作用。
  • 考虑这一步:一个示例文本。然后按两次 Enter 键并单击粘贴按钮(内容-第二个示例文本)。我期待:一个示例文本。\n\n第二个示例文本。但我得到的是:A sample Text.Second Sample Text.
  • 您需要考虑新的行 - 请检查这个问题,更重要的是答案 - 效果很好! stackoverflow.com/questions/33312843/…

标签: uwp


【解决方案1】:

我也遇到了麻烦。

当然,SelectionStart 是文本框中的插入符号位置。但是TextBox把'\r\n'看成一个整体,string类型把它看成两个单独的char。

所以,要使用substring(),你必须通过给定的SelectionStart找到真正的索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多