2017-12-19 8 views
1

Ich verwende den FolderBrowserDialog, um den Benutzer einen Speicherort zum Speichern von Dateien und/oder einen neuen Ordner erstellen zu lassen. Es funktioniert zu 99% der Zeit, aber in einigen Fällen, wenn der Benutzer auf die Schaltfläche "Neuen Ordner erstellen" klickt, ändert sich der Name und klickt dann auf OK. Es wird eine Ausnahme ausgelöst, dass "Neuer Ordner" nicht existiert.Dateispeicherort nicht immer aktualisiert

Es scheint, dass der Code immer noch nach einem Ordner mit dem Namen "Neuer Ordner" sucht, obwohl der Benutzer ihn umbenannt hat. Was kann ich in meinem Code ändern, um dieses Problem zu beheben, damit die Dateien immer in dem Ordner gespeichert werden, den der Benutzer auswählt?

//Declaring Filename 
FolderBrowserDialog folderDlg = new FolderBrowserDialog(); 
folderDlg.ShowNewFolderButton = true; 
folderDlg.Description = "Choose the location to save Files"; 
DialogResult result = folderDlg.ShowDialog(); 
if (result == DialogResult.OK) 
{ 
    savelocation = folderDlg.SelectedPath; 
} 

// Choose whether to write header. Use EnableWithoutHeaderText instead to omit header. 
dataGridExport.ClipboardCopyMode = DataGridViewClipboardCopyMode.EnableAlwaysIncludeHeaderText; 
// Select all the cells 
dataGridExport.SelectAll(); 
// Copy selected cells to DataObject 
DataObject dataObject = dataGridExport.GetClipboardContent(); 
// Get the text of the DataObject, and serialize it to a file 
File.WriteAllText(savelocation + "\\ExcelExport.csv", dataObject.GetText(TextDataFormat.CommaSeparatedValue)); 
+0

@CaiusJard - Haben Sie eine alternative Methode, um dem Benutzer die Möglichkeit zu geben, einen Speicher auszuwählen? Kation? –

+1

BTW, verwenden Sie immer Path.Combine, um Ihre Dateipfade zu erstellen. – LarsTech

+0

Sie haben keinen Code, um den Fall zu behandeln, in dem das Dialogergebnis nicht 'DialogResult.OK' ist. Könnte das Problem auftreten, wenn der Standardwert von' savelocation' wegen eines anderen 'DialogResult' verwendet wird? – 0liveradam8

Antwort

2

Es ist unwahrscheinlich, dass es sich um einen Fehler in Ihrem Code handelt. der Benutzer erstellt einen neuen Ordner in der FBD, FBD erfasst den Pfad als ...\new folder, der Benutzer klickt erneut darauf (um ihn umzubenennen), benennt ihn um und klickt ihn dann nicht noch einmal an (oder klickt darauf und wieder an), um dies zu realisieren Der Name hat sich geändert. Nicht deine Schuld/dein Problem; PEBKAC/PICNIC. Jede Windows-Software, die FBD verwendet, leidet darunter.

Als eine Seite, FBD ist eine schreckliche Sache, vermeiden Sie es (Sie können nicht immer schnell einen Pfad einfügen, um dorthin zu gehen .. Sie müssen mühsam Ihren Weg durch viele Verzeichnisse mit der Maus finden. Es wird sogar irritierender, wenn das von der FBD ausgewählte Anfangsverzeichnis auf einen Standard zurückgesetzt wird/nicht in der Nähe des vom Benutzer zuletzt gewählten Werts usw.)

Verwenden Sie stattdessen einen OpenFileDialog und fordern Sie den Benutzer gleichzeitig zur Eingabe eines Dateinamens auf, oder nehmen Sie ein Sehen Sie sich eine SO-Frage wie How do you configure an OpenFileDialog to select folders? an, um zu sehen, was die Leute getan haben, um die Einschränkungen der FBD zu umgehen.

+0

Ich möchte nur den Benutzer einen Speicherort auswählen. Ich möchte nicht zulassen, dass sie einen Dateinamen eingeben können –

+1

Ich weiß, so dass Sie denken, dass die Verwendung der FBD den Benutzer einen Gefallen tut. Ich flehe Sie an, einige Software zu verwenden, die die FBD verwenden, und sehen Sie, wie scheiße eine Benutzererfahrung für Sie selbst ist. Bitte stellen Sie Ihre Benutzer nicht durch die Benutzung davon. Finden Sie einen Weg, den OFD zu verwenden (ist es Ihnen wirklich wichtig, wenn der Benutzer einen eigenen Namen haben möchte?), Oder stellen Sie den Hauptbenutzern ein Textfeld zur Verfügung, in das Sie einen Pfad einfügen können für Enteneibenutzer) und haben das FBD dieses Textkasten als der sichere Weg aktualisieren. und dann mit dem neuen Ordnerproblem –

+0

Hmmm - ich habe nicht erkannt, dass FBD so schrecklich ist. Ich mag die Idee einer Textbox oder einer formatierten Winform, um dem Benutzer die Eingabe eines Dateipfads zu ermöglichen. –

Verwandte Themen