Как отобразить окно сообщения с неверно введенным именем файла при сохранении файла с помощью диалогового окна сохранения файла - PullRequest
0 голосов
/ 13 сентября 2010

Привет всем! Я написал код для отображения окна сообщения, если при сохранении файла были введены недопустимые символы, но мое окно сообщения не отображается.На самом деле у меня будет опция диалога сохранения файла, чтобы сохранить файл, если имя файла начинается или состоит из следующего

             \\/:*?<>|"

Я хотел бы отобразить окно сообщения как недействительные или недопустимые символы в файле

Мой код выглядит следующим образом

  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 ]

1 голос
/ 13 сентября 2010

Установите для свойства ValidateNames значение true в экземпляре saveFileDialog1 согласно этому MSDN .И это значение по умолчанию равно true при создании экземпляра класса 'SaveFileDialog'.

Если вы говорите о наличии настраиваемого обработчика сообщений об ошибках для отображения настраиваемого сообщения, вам необходимо переопределитьSaveFileDialog путем его подклассификации и перехвата сообщений процедур Windows для этого класса.Взгляните на эту статью о CodeProject , в которой показано, как это сделать.

1 голос
/ 13 сентября 2010

Это потому, что FileDialog уже проверяет сам себя.

Если вы попытаетесь использовать < или > в имени файла, вы получите сообщение об ошибке. Если вы попытаетесь использовать шаблон поиска, например ? или *, ListView будет отфильтрован для данного шаблона.

1 голос
/ 13 сентября 2010

Класс SaveFileDialog имеет свойство с именем ValidateNames. Если значение этого свойства равно true (по умолчанию оно не требуется), диалоговое окно автоматически проверит, что имя, которое вводит пользователь, не содержит недопустимых символов. Если пользователь вводит недопустимое имя файла и нажимает кнопку «Сохранить», диалоговое окно не закроется, а вместо этого отобразит сообщение об ошибке: alt text

(да, сейчас я использую Windows XP)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...