首页 文章

比较Richtextbox中的更改wpf

提问于
浏览
1

WPF窗口有一个加载Xaml包格式的富文本框,我能够对其进行编程以打开,保存和关闭文档 . 现在,在关闭时,我能够要求用户在关闭时保存或不保存,我能够通过消息框执行此操作 .

现在的问题是,如果富文本框是空的,或者如果用户没有对其进行任何修改,那么即使这样,也可以在结束时保存火灾 .

我试着通过比较richtextbox,flowdocument对象和文本范围对象来比较开始数据和关闭时间数据,但我确实对它们有好运,请你告诉我如何进行比较/如果发生任何变化 . 如果使用富文本框的更改事件并使用标记,则可以解决工作,但如果用户还原更改,则会再次出现问题 .

寻求建议谢谢 .

2 回答

  • 0

    当窗口打开时,将标志设置为false,表示rtb未更改 .

    处理richtextbox的TextChanged事件,在textchanged事件子例程中设置标志,指示rtb是否已更改为true .

    在关闭时检查标志,看它是真还是假 .

    值得注意的是,您还需要另一个标志来让textchange子例程知道您的表单正在初始化,因为最初加载rtb时会触发textchange事件 . 只需将此初始加载标志初始化为表单上的局部变量,其值为true,并在表单加载事件结束时将其设置为false .

    在textchange例程中,首先检查初始加载是否正在进行,以及是否不将rtb标志翻转为true .

  • 0

    计算保存的Xaml包和要保存的Xaml包的哈希值 . 如果不相等保存 . HashAlgorithm.ComputeHash Method需要 StreamByte[] .

    byte[] oldHashcode = MD5CryptoServiceProvider.Create().ComputeHash( Stream or byte[] );
    byte[] newHashcode = MD5CryptoServiceProvider.Create().ComputeHash( Stream or byte[] );
    
    if (!newHashcode.SequenceEqual(oldHashcode))
    {
        ask the user to save
    }
    

相关问题