2009-03-08 11 views
0

Ich habe mein Gehirn in einem Knoten über die einfache Aufgabe, ein Anwendungsverzeichnis vom Benutzer zu bekommen. Ich habe ein AppFolderDialog-Formular, das ich als einen Dialog verwende, auf dem OK und Abbrechen-Schaltflächen, ein schreibgeschütztes Textfeld und eine Durchsuchen-Schaltfläche sind. Die Durchsuchen-Schaltfläche öffnet einen FolderBrowserDialog.Suche nach einem Verzeichnis und Abbrechen, Wiederholen

Jetzt, wenn der Benutzer auf OK klickt, brauche ich eine Schleife, um zu überprüfen, ob das ausgewählte Verzeichnis eine bestimmte Datei enthält, und geben Sie dem Benutzer ein Abbrechen oder Wiederholen-Meldungsfeld. Abbrechen wird den Abbruch an den Dialog weiterleiten, um ihn zu schließen und DialogResult.Cancel zurückzugeben. Wiederholen gibt dem Benutzer einfach eine weitere Möglichkeit, nach einem Verzeichnis zu suchen.

Jetzt brauche ich auch eine Abbrechen-Schaltfläche im Dialog selbst, damit der Benutzer abbrechen kann, ohne ein ungültiges Verzeichnis auswählen zu müssen. Ich weiß, dass ich alles falsch verstanden habe, aber ich bin mit vielen Dingen auf einmal beschäftigt, und meine Konzentration wird geschossen. Ich würde mich über einige Vorschläge freuen, wie diese Aufgabe in der Anwendung verbessert werden kann.

Antwort

1

Beachten Sie, dass Sie immer noch Code haben müssen, der überprüft, ob das Verzeichnis vorhanden ist, wenn Sie tatsächlich versuchen, etwas damit zu tun.

Da Sie sowieso diesen Code haben müssen, würde ich nicht in den Verzeichnisauswahldialog schauen. Lassen Sie den Benutzer ein Verzeichnis auswählen, und wenn er eine Datei auswählt, die nicht existiert, oder wenn Ihre App-Daten nicht darin enthalten sind, wird die Fehlermeldung gelöscht. Schließlich könnte der Benutzer ein perfektes Verzeichnis in Ihrer App auswählen und dann löschen.

1

Ich würde vorschlagen, dass Sie nicht die zwei Dialoge zusammenbinden. Lassen Sie den ersten Dialog nur das richtige Verzeichnis erhalten. Sobald der Benutzer auf OK klickt, wird das erste Dialogfeld geschlossen, Sie überprüfen das Ergebnis in Ihrer Anwendung und wenn die erwartete Datei nicht existiert, öffnen Sie einen Fehlerdialog, der sie darüber informiert, dass das gewählte Verzeichnis nicht korrekt ist. Sie könnten ihnen die Möglichkeit geben, es erneut zu versuchen, was wiederum den ersten Dialog wieder öffnet. Das Abbrechen eines der Dialoge würde einfach dazu führen, dass kein Verzeichnis ausgewählt wurde.

+0

Ich mag Ihren Gedankengang, und ich denke, es hat mich inspiriert, nicht einmal meinen eigenen Dialog zu verwenden. Lassen Sie den Benutzer einfach Ordner aus dem Hauptformular mit der gleichen Wiederholungsschleife durchsuchen. – ProfK

0

Suchen Sie das?

private string GetPathFromUser() 
    { 
     FolderBrowserDialog dialog = new FolderBrowserDialog(); 
     while (dialog.ShowDialog() == DialogResult.OK) 
     { 
      // Do your validation here 
      bool pathIsGood = false; 

      if (pathIsGood) 
      { 
       return dialog.SelectedPath; 
      } 
      else 
      { 
       DialogResult cancelRetry = MessageBox.Show("Directory is not valid becuase bla..", "", MessageBoxButtons.RetryCancel); 
       if (cancelRetry == DialogResult.Cancel) break; 
      } 
     } 
     return null; 
    } 
Verwandte Themen