Wpf粘贴事件两次添加文本

时间:2017-07-07 11:14:35

标签: c# wpf event-handling

我正在尝试在WPF TextBox上处理粘贴事件。我想用昏迷和空白替换新的行代码。

我怀疑(因为我正在添加粘贴处理程序而不是设置它)现有的粘贴处理程序也会通过粘贴触发?

代码:

public MainWindow()
{
    InitializeComponent();
    System.Windows.DataObject.AddPastingHandler(txtSearch, OnPaste);
}

private void OnPaste(object sender, DataObjectPastingEventArgs e)
{
    var isText = e.SourceDataObject.GetDataPresent(System.Windows.DataFormats.UnicodeText, true);
    if (!isText) return;

    var text = e.SourceDataObject.GetData(System.Windows.DataFormats.UnicodeText) as string;
    string parsedText = text.Replace(Environment.NewLine, ", ");
    if (string.IsNullOrEmpty(txtSearch.Text))
    {
          txtSearch.Text = parsedText;
    }
    else
    {
          txtSearch.Text += parsedText;
    }
}

调试时我可以看到txtSearch.Text设置为我想要的值,但是在gui上还有一些额外的值。额外的文本是第一个新行字符之前的字符串。

例如,如果我粘贴:

Aaa
Bbb
Ccc

结果是:AaaAaa, Bbb, Ccc

但我希望它是:Aaa, Bbb, Ccc

0 个答案:

没有答案