我正在努力使SaveFileDialog
and FileOpenDialog
对用户输入的文件名强制执行扩展名。我尝试过使用中提出的示例问题 389070 https://stackoverflow.com/questions/389070/how-does-the-addextension-property-work-in-c-2-0但它没有按预期工作:
var dialog = new SaveFileDialog())
dialog.AddExtension = true;
dialog.DefaultExt = "foo";
dialog.Filter = "Foo Document (*.foo)|*.foo";
if (dialog.ShowDialog() == DialogResult.OK)
{
...
}
如果用户输入文本test
在一个包含文件的文件夹中test.xml
碰巧存在,对话框会建议名称test.xml
(而我真的只是想看看*.foo
在列表中)。更糟糕的是:如果用户选择test.xml
,那么我确实会得到test.xml
作为输出文件名。
我怎样才能确保SaveFileDialog
实际上只允许用户选择一个*.foo
文件?或者至少,当用户单击时它会替换/添加扩展名Save
?
建议的解决方案(实施FileOk
事件处理程序)只完成部分工作,因为我真的想禁用Save
如果文件名的扩展名错误,则单击按钮。
为了留在对话中and更新文本框中显示的文件名FileOk
处理程序,以反映具有正确扩展名的新文件名,请参阅以下相关问题 https://stackoverflow.com/questions/1599511/how-to-replace-filename-in-savefiledialog-fileok-event-handler.
您可以处理FileOk http://msdn.microsoft.com/en-us/library/system.windows.forms.filedialog.fileok.aspx事件,如果扩展名不正确则取消它
private saveFileDialog_FileOk(object sender, CancelEventArgs e)
{
if (!saveFileDialog.FileName.EndsWith(".foo"))
{
MessageBox.Show("Please select a filename with the '.foo' extension");
e.Cancel = true;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)