C# OpenFileDialog xml筛选器允许.htm快捷方式
我在winforms中创建了filedialog。 它被设置为只读.xml文件C# OpenFileDialog xml筛选器允许.htm快捷方式,c#,winforms,openfiledialog,C#,Winforms,Openfiledialog,我在winforms中创建了filedialog。 它被设置为只读.xml文件 ofd.DefaultExt="xml"; ofd.Filter="XML Files|*.xml"; 但当我运行它时,它允许上传.htm文件的快捷方式。然而,它根本不应该显示.htm文件。您这样做是正确的。使用过滤器属性可以将“打开”对话框中显示的文件限制为仅指定的类型。在这种情况下,用户在对话框中只能看到扩展名为.xml的文件 但是,如果他们知道自己在做什么,用户绕过过滤器并选择其他类型的文件是很简单的。例如,
ofd.DefaultExt="xml";
ofd.Filter="XML Files|*.xml";
但当我运行它时,它允许上传.htm文件的快捷方式。然而,它根本不应该显示.htm文件。您这样做是正确的。使用
过滤器
属性可以将“打开”对话框中显示的文件限制为仅指定的类型。在这种情况下,用户在对话框中只能看到扩展名为.xml
的文件
但是,如果他们知道自己在做什么,用户绕过过滤器并选择其他类型的文件是很简单的。例如,他们可以只键入完整的名称(如有必要,还可以键入路径),或者键入新的筛选器(例如,*.
)并强制对话框显示所有此类文件
因此,您仍然需要逻辑来检查并确保所选文件满足您的要求。使用该方法从所选文件路径获取扩展名,并与预期路径进行顺序不区分大小写的比较
例如:
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "XML Files (*.xml)|*.xml";
ofd.FilterIndex = 0;
ofd.DefaultExt = "xml";
if (ofd.ShowDialog() == DialogResult.OK)
{
if (!String.Equals(Path.GetExtension(ofd.FileName),
".xml",
StringComparison.OrdinalIgnoreCase))
{
// Invalid file type selected; display an error.
MessageBox.Show("The type of the selected file is not supported by this application. You must select an XML file.",
"Invalid File Type",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
// Optionally, force the user to select another file.
// ...
}
else
{
// The selected file is good; do something with it.
// ...
}
}