代码之家  ›  专栏  ›  技术社区  ›  Developer

如何在使用“保存文件”对话框保存文件时输入的无效文件名上显示消息框

  •  0
  • Developer  · 技术社区  · 14 年前

    嗨,我写了一个代码来显示一个消息框,如果在保存文件时输入了无效字符,但我的消息框没有显示。实际上,如果文件名开始或包含以下内容,我将有一个保存文件对话框选项来保存文件

                 \\/:*?<>|"
    

    我想在文件中将消息框显示为无效或非法字符

      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);
          }
    

    3 回复  |  直到 13 年前
        1
  •  1
  •   Fredrik Mörk    14 年前

    savefiledialog class有一个名为 validateNames 的属性。如果该属性的值为 true(默认值为,无需分配),对话框将自动验证用户输入的名称不包含任何非法字符。如果用户输入非法文件名并单击“保存”按钮,对话框将不会关闭,而是显示一条错误消息:

    带路 ValidateNames true (默认情况下,无需分配),对话框将自动验证用户输入的名称不包含任何非法字符。如果用户输入非法文件名并单击“保存”按钮,对话框将不会关闭,而是显示一条错误消息: alt text

    (是,我当前使用的是Windows XP)

        2
  •  1
  •   Oliver    14 年前

    这是因为filedialog已经对自己进行了检查。

    如果你试图使用 < 或A > 在文件名中,您会收到一条错误消息。如果你尝试使用像 ? *

        3
  •  1
  •   t0mm13b    14 年前

    设置属性 ValidateNames 在真实中 saveFileDialog1 根据此实例 MSDN . 在“savefiledialog”类的运行时实例化时,它被设置为默认值为true。

    CodeProject 这说明了怎么做。