大家好我编写了一个代码来显示一个消息框,如果在保存文件时输入了无效字符,但我的消息框没有显示。实际上,如果文件名开始或由以下
组成,我将有一个保存文件对话框选项来保存文件 \\/:*?<>|"
我想在文件
中显示一个消息框作为无效或非法字符我的代码如下
Stream myStream;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.InitialDirectory = @"C:\";
saveFileDialog1.DefaultExt = "txt";
saveFileDialog1.Filter = "(*.txt)|*.txt";
saveFileDialog1.FilterIndex = 2;
saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
FileName = saveFileDialog1.FileName;
if ((FilePathHasInvalidChars(FileName)))
{
MessageBox.Show("File name should not contain \\/:*?<>|" ,"", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if ((myStream = saveFileDialog1.OpenFile()) != null)
{
//FileName = saveFileDialog1.FileName;
if (!(FilePathHasInvalidChars(FileName)))
{
TreeNode newNode = new TreeNode(FileName);
newNode.SelectedImageIndex = 1;
tvwACH.SelectedNode.Nodes.Add(newNode);
TreeNode NodeFileHeader = newNode.Nodes.Add("FileHeader");
myStream.Close();
}
}
}
}
public static bool FilePathHasInvalidChars(string path)
{
return (!string.IsNullOrEmpty(path) && path.IndexOfAny(System.IO.Path.GetInvalidPathChars()) >= 0);
}
任何人都可以帮助我
答案 0 :(得分:1)
SaveFileDialog
类有一个名为ValidateNames
的属性。该属性的值为true
(默认情况下,无需分配),对话框将自动验证用户输入的名称是否包含任何非法字符。如果用户输入非法文件名并单击“保存”按钮,则对话框不会关闭,而是显示错误消息:
(是的,我目前正在使用Windows XP)
答案 1 :(得分:1)
根据此MSDN,在ValidateNames
实例中将属性saveFileDialog1
设置为true。在“SaveFileDialog”类的运行时实例化中,默认设置为true。
如果您正在讨论使用自定义错误消息处理程序来显示自定义消息,则需要通过对其进行子类化并拦截此类的Windows过程消息来覆盖SaveFileDialog。请查看CodeProject上的这篇文章,其中介绍了如何执行此操作。
答案 2 :(得分:1)
这是因为FileDialog已经对自己进行了检查。
如果您尝试在文件名中使用<
或>
,则会收到错误消息。如果您尝试使用?
或*
等搜索模式,则会针对给定模式过滤ListView。