富文本框在未更改时字符串不等于“原始字符串”

时间:2014-04-16 15:31:12

标签: c# wpf richtextbox

我有一个WPF应用程序,其中我使用一个富文本框来显示工作项的xml,xml是可编辑的。有一个保存按钮,因此如果用户更改了xml,他们可以将其保存回数据库。现在,还有一些其他项目可供用户编辑并保存回数据库,因此它是一种全面保存,如果它们已从原始源更改,则会提示更新可编辑项目。

  • 第1项不等于第1项Orignal(如果有)显示提示
  • 第2项不等于第2项Orignal(如果有)显示提示
  • 等...

当我更新其他可编辑项目之一时遇到问题,更新xml的提示会在不应该显示时显示(因为它没有被更改所以它应该被跳过过度)。

我从富文本框中获取文本,如下所示:

TextRange textRange = new TextRange(
    rtb_xmlBase.Document.ContentStart,
    rtb_xmlBase.Document.ContentEnd);

string newXmlBase = textRange.Text;

然后检查它是否与原始xml字符串不同(GetWorkItemXML从数据库中返回原始xml):

if (!newXmlBase.Equals(bailyAccess.GetWorkItemXML(long.Parse(rowView.Row["workitemid"].ToString()))))
{
    MessageBoxButton btnMessageBox = MessageBoxButton.YesNo;
    MessageBoxImage icnMessageBox = MessageBoxImage.Warning;

    MessageBoxResult rsltMessageBox = MessageBox.Show("Are you sure you wish to update the XML Base?", "Update Work Item",
        btnMessageBox, icnMessageBox);

    switch (rsltMessageBox)
    {
        case MessageBoxResult.Yes:
            //if (!bailyAccess.UpdateWorkItemXML(long.Parse(rowView.Row["workitemid"].ToString()), newXmlBase))
                //tb_ErrorDetails.Text = "An error occured during update, please close this window and try again";
            break;

        case MessageBoxResult.No:
            break;
    }
}

那么是否存在某种格式差异,我不会意识到,在富文本框和普通文本框之间会有什么可以解释这种变化?因为当它只是一个普通的文本框时,它运行正常。我更改为富文本框以便更轻松地进行搜索。或者我只是没有正确地获取文本?

----编辑----

我按照建议进行了调试,并且有\r\n个字符。我找到并替换它们。

现在似乎两者之间的唯一区别是newXmlBase在XML模式周围有转义字符:

"<?xml version=\"1.0\" encoding=\"utf-16\"?><Transaction xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">

其中,来自bailyAccess的字符串不是:

"<?xml version="1.0" encoding="utf-16"?>  <Transaction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 

bailyAccess正在使用来自VB 的核心对象(和函数)的继承类。我不会想到会有所作为,所以我之前没有提到它,但现在看起来它可能很重要。

0 个答案:

没有答案
相关问题