WPF窗口有一个加载Xaml包格式的富文本框,我能够对它进行编程来打开、保存和关闭文档。现在,在关闭时,我可以要求用户在关闭时保存或不保存,我可以通过消息框来做到这一点。
现在的问题是,如果富文本框是空的,或者如果用户没有对其进行任何修改,那么在关闭时也会触发保存问题。
我试着通过比较richtextbox,flowdocument对象和text range对象来比较开盘数据和收盘时间数据,但我确实有运气,你能告诉我如何才能得到一个好的比较/如果发生任何变化。如果使用富文本框的change事件并使用标志,则工作可以解决,但如果用户还原更改,则问题再次发生。
寻求建议谢谢。
发布于 2012-05-20 05:49:40
当窗口打开时,将标志设置为false,以指示rtb未更改。
处理richtextbox的TextChanged事件,在textchanged事件子例程中设置指示rtb是否已更改的标志。
在关闭时,检查标志,看看它是真是假。
值得注意的是,您还需要另一个标志来让textchange子例程知道您的窗体正在初始化,因为textchange事件在最初加载rtb时触发。只需将这个初始加载标志初始化为表单上的一个局部变量,其值为true,并在表单加载事件结束时将其设置为false。
在textchange例程中,首先检查初始加载是否正在进行,如果是,不要将rtb标志反转为true。
发布于 2012-05-20 19:25:15
计算已保存的Xaml包和要保存的Xaml包的哈希。如果不相等,则保存。HashAlgorithm.ComputeHash Method接受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
}https://stackoverflow.com/questions/10668828
复制相似问题