我试图使SaveFileDialog和FileOpenDialog强制对用户输入的文件名的扩展名.我试过使用
question 389070中提出的示例,但是它不能按照预期的方式工作:
var dialog = new SaveFileDialog()) dialog.AddExtension = true; dialog.DefaultExt = "foo"; dialog.Filter = "Foo Document (*.foo)|*.foo"; if (dialog.ShowDialog() == DialogResult.OK) { ... }
如果用户在文件test.xml存在的文件夹中键入文本测试,该对话框将建议名称为test.xml(而我真的只想在列表中看到* .foo).更糟糕的是:如果用户选择test.xml,那么我确实会将test.xml作为输出文件名.
如何确保SaveFileDialog真的只允许用户选择* .foo文件?或至少,当用户单击“保存”时,它会替换/添加扩展名?
建议的解决方案(实现FileOk事件处理程序)仅执行部分作业,因为如果文件名有错误的扩展名,我真的想禁用保存按钮.
为了保留对话框并更新FileOk处理程序文本框中显示的文件名,以反映具有正确扩展名的新文件名,请参阅following related question.