通过自定义保存文件对话框替换任何程序打开的保存文件对话框

时间:2014-03-15 10:02:16

标签: c# .net checkbox customization savefiledialog

我正在开发适用于Windows的版本控制/文件同步系统。在经典保存文件对话框的底部有一个复选框,可以选中检查/取消选中我的文件版本。

是否可以通过任何程序(单词等)监听打开的保存文件对话框,并用自定义的对话框替换/覆盖该对话框(带有附加复选框)?

如果选中该复选框,则会弹出另一个窗口,用户可以在其中输入一些其他元数据。之后,数据存储在本地数据库中。

我已经使用了dmihailescu的方法(链接提供),但它非常复杂,我不知道如何修改该示例以侦听其他程序打开的保存文件对话框。

http://www.codeproject.com/Articles/19566/Extend-OpenFileDialog-and-SaveFileDialog-the-easy?msg=4779306#xx4779306xx

另一种方法是使用FileSystemWatcher但是观看整个系统非常昂贵并且它不是很舒服,因为如果用户想要对其进行版本控制,则必须要求用户创建任何文件。

我希望有人可以帮我解决这个问题,或者有一些额外的提示/方法。

谢谢。

编辑:用例

用户必须编写文档并创建新的word-doc。当他/她单击单词的另存为菜单条目时,如果该文件应该是版本化的话,我的自定义保存文件对话框应弹出底部的复选框。如果该复选框处于“活动”状态,则会出现一个新窗口,用户可以在其中输入其他元数据。之后,数据应存储在本地数据库中。

在我的情况下,只应将元数据(如路径等)存储在数据库中。假设用户将相同的文件存储在两个不同的directotries中(一个文件是“较旧”,一个文件是当前文件)。如果用户打开此文件的旧版本,我的系统应该识别出一个“较新”的文件已经存储在另一个地方并同步这些文件。

这应该是一个非常简单的例子。

1 个答案:

答案 0 :(得分:0)

您有两项功能:保存和版本控制。这两项任务实际上都相当复杂。因此,你不应该混合它们。最好使用标准Windows API来保存文件,不要更改它。想想你将如何支持几种不同的Windows版本,以及它会有多痛苦。

我假设您拥有自己的UI,并且不与Windows资源管理器(如Tortoise Svn或Dropbox)集成。在这种情况下,您可以先进行版本控制魔术,然后使用标准API保存结束文件。

如果您与Windows资源管理器集成,我建议您查看Tortoise svn source code