我正在尝试在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