Pie*_*aud 9 c# savefiledialog winforms
我正在尝试对用户输入的文件名进行扩展SaveFileDialog和FileOpenDialog强制执行.我已尝试使用问题389070中提出的示例,但它无法按预期工作:
var dialog = new SaveFileDialog())
dialog.AddExtension = true;
dialog.DefaultExt = "foo";
dialog.Filter = "Foo Document (*.foo)|*.foo";
if (dialog.ShowDialog() == DialogResult.OK)
{
...
}
Run Code Online (Sandbox Code Playgroud)
如果用户test在文件test.xml恰好存在的文件夹中键入文本,则对话框将建议名称test.xml(而我真的只想*.foo在列表中看到).更糟糕的是:如果用户选择test.xml,那么我确实会得到test.xml输出文件名.
如何确保SaveFileDialog真正只允许用户选择*.foo文件?或者至少,当用户点击时,它会替换/添加扩展名Save?
建议的解决方案(实现FileOk事件处理程序)只执行部分工作,因为Save如果文件名具有错误的扩展名,我真的想要禁用该按钮.
若要保留对话框并更新FileOk处理程序中文本框中显示的文件名,以反映具有正确扩展名的新文件名,请参阅以下相关问题.
Tho*_*que 15
您可以处理该FileOk事件,如果它不是正确的扩展名,则取消它
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;
}
}
Run Code Online (Sandbox Code Playgroud)