2014-09-21 4 views
3

나는 SaveFileDialog입니다.SaveFileDialog의 파일 이름을 사용자 지정 검사

사용자가 확인을 클릭하면 비슷한 파일 이름이 있는지 확인해야합니다.

시스템에서 이러한 테스트를 수행하고 있지만 테스트를 추가해야합니다. 유사한 이름과 번호가있는 파일이 있습니까?

예를 들어 사용자가 파일 이름 "a"를 선택하고 파일 "a1"또는 "a2"가있는 경우 경고 메시지가 나타납니다. ("a"라는 파일이있을 때 나타납니다).

이 방법이 있습니까?

+0

이 경우 SaveFileDialog를 사용하지 마십시오. 자체 생성 컨트롤을 사용하여이를위한 사용자 지정 논리를 만듭니다. –

+0

* a * & * a1 * & * a2 *는 같은 경로에 있습니까? –

+0

@MehdiKhademloo, 네. –

답변

2

SaveFileDialogFileDialog 클래스는 FileOk 이벤트를 상속받습니다. 이 이벤트에 대한 핸들러 메소드에 유사한 파일이 이미 존재하는지 여부를 논리로 확인할 수 있습니다. 결과가 true이면 경고 메시지가 표시됩니다. 당신이

SaveFileDialog S = new SaveFileDialog(); 
if(S.ShowDialog() == DialogResult.OK) 
{ 
    bool ShowWarning = false; 
    string DirPath = System.IO.Path.GetDirectoryName(S.FileName); 
    string[] Files = System.IO.Directory.GetFiles(DirPath); 
    string NOFWE = DirPath+"\\"+System.IO.Path.GetFileNameWithoutExtension(S.FileName); 
    foreach (var item in Files) 
    { 

     if (item.Length > NOFWE.Length && item.Substring(0, NOFWE.Length) == NOFWE) 
     { 
      int n; 
      string Extension = System.IO.Path.GetExtension(item); 
      string RemainString = item.Substring(NOFWE.Length, item.Length - Extension.Length - NOFWE.Length); 
      bool isNumeric = int.TryParse(RemainString, out n); 
      if(isNumeric) 
      { 
       ShowWarning = true; 
       break; 
      } 

     } 
    } 
    if(ShowWarning) 
    { 
     if (MessageBox.Show("Warning alert!", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) 
      Save();//Saving instance 
    } 
    else 
    { 
     Save();//Saving instance 
    } 
} 

ANS를 원하는

var dlg = new SaveFileDialog(); 
dlg.FileOk += (o, args) => 
       { 
        var file = dlg.FileName; 
        if (isSimilarFileExist(file)) 
        { 
         var result = MessageBox.Show("Similar file names exist in the same folder. Do you want to continue?", 
                "Some dialog title", 
                MessageBoxButtons.YesNo, 
                MessageBoxIcon.Warning 
               ); 
         if(result == DialogResult.No) 
         args.Cancel = true; 
        } 
       }; 
dlg.ShowDialog(); 

...... 

private bool isSimilarFileExist(string file) 
{ 
    //put your logic here 
} 
0

이 대답은 : 그러면, 사용자가 경고 대화 상자에서 No을 선택하면, TrueCancelEventArgs 매개 변수의 Cancel 속성을 설정,이 폐쇄에서 파일 대화 상자 창을 저장 방지 할 수 있습니다 Save() 방법은 저장 지침입니다 ...