WPF窗口有一个加载Xaml包格式的富文本框,我能够对其进行编程以打开,保存和关闭文档。 现在,在关闭时,我能够要求用户在关闭时保存或不保存,我能够通过消息框执行此操作。
现在的问题是,如果富文本框为空或用户没有对其进行任何修改,即使这样,也要在关闭时保存火灾。
我试图通过比较富文本框、流文档对象和文本范围对象来比较打开数据与关闭时间数据,但我确实对它们有任何运气,您能否告诉我如何进行良好的比较/如果发生任何更改。如果使用富文本框的更改事件并使用标志,则可以解决工作,但如果用户还原更改,则问题再次出现。
寻求建议谢谢。
窗口打开时将标志设置为 false,指示 RTB 未更改。
处理富文本框的 TextChanged 事件,在 textchanged 事件子例程中设置指示 rtb 是否已更改为 true 的标志。
在关闭时检查标志以查看它是真的还是假的。
值得注意的是,您还需要另一个标志来让 textchange 子例程知道您的表单正在初始化,因为 textchange 事件在最初加载 rtb 时触发。 只需将此初始加载标志初始化为表单上的局部变量,值为 true,并在表单加载事件结束时将其设置为 false。
在文本更改例程中,首先检查初始加载是否正在进行中,如果是,请不要将 rtb 标志翻转为 true。
计算已保存的 Xaml 包和要保存的 Xaml 包的哈希。如果它不等于保存。HashAlgorithm.ComputeHash方法采用Stream
或Byte[]
。
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
}