Wie kann ich verhindern, dass eine Ausnahme aus, wenn ich Abbrechen eines openfiledialog?
Mein Programm hat eine Schaltfläche, die beim anklicken öffnet sich ein openfiledialog, um ein Bild:
private string ChoosePicture()
{
fDialog.Title = "Select Picture";
fDialog.Filter = "Image Files (*.bmp, *.gif, *.jpg)|*.bmp; *.gif*;*.jpg";
fDialog.InitialDirectory = "C:";
fDialog.ShowDialog();
fDialog.AddExtension = true;
fDialog.CheckFileExists = true;
fDialog.CheckPathExists = true;
//returns a string for the directory
return fDialog.FileName.ToString();
}
Durch einen check auf die dialogresult-box hat nicht mein Problem gelöst entweder:
fDialog.AddExtension = true;
fDialog.CheckFileExists = true;
fDialog.CheckPathExists = true;
DialogResult res = fDialog.ShowDialog();
if (res == DialogResult.OK)
{
//returns a string for the directory
return fDialog.FileName.ToString();
}
return null;
Der code funktioniert, wenn ich wählen Sie ein Bild aus und füllen Sie die Auswahl der Datei. Allerdings, wenn ich brechen Sie den Vorgang an einem beliebigen Punkt in zwischen bekomme ich die exception "Der Weg ist nicht in der Rechtsform". Ich bin nicht sicher, welches Teil ich mir vorstellen, ich könnte dies mit einem try-catch
aber ich bin nicht positiv, welches Teil das Problem verursacht? Wenn ich ein try catch
um den Aufruf an die ChoosePicture()
Methode, kann ich zumindest verhindern, dass es abstürzt, das Programm aber die Ausnahme ist, noch wird geworfen, wenn kein Bild ausgewählt ist, in der fdialogbox.
- wickeln Sie Ihren code für die Dialogresult-um eine If-else-Anweisung
- Dies geschieht, weil Sie ignorieren, ist der Rückgabewert von ShowDialog(). Könnte das schlechte Einrücken zu.
- fügen Sie die dialogbox, die Einschränkungen, bevor Sie tatsächlich das Dialogfeld angezeigt. nach, dass Ihr alles erledigt und diese überprüfung einfach egal
- es sei denn, Sie setzen Sie in der designer, die diese Einstellung eigentlich egal, der Steuerung, wenn zum ersten mal verwendet.
- es klingt wie Sie brauchen, um zu überprüfen, der Wert wird zurückgegeben, die von der ChoosePicture () - Methode auf, bevor Sie verarbeiten weiter. Wenn gibt die Methode einen leeren string oder null ist, nicht weiterfahren. Zeigen Sie den code, der den Aufruf der ChoosePicture () - Methode
Du musst angemeldet sein, um einen Kommentar abzugeben.
auch, mit dem Namen ist bereits ein string, so dass keine Notwendigkeit zu verwenden
.ToString()
auf esBEARBEITEN: Feste Einrücken
if
Anweisung und lassen Sie uns wissen, was der Wert von Ergebnis wird, wenn Sie auf Abbrechen klickenÜberprüfen Sie den dialog führen und entsprechend zu handeln:
Test, um zu sehen, ob eine Datei ausgewählt wurde:
DialogResult dresult=fDialog.ShowDialog();
Prüfen, ob
dresult==DialogResult.Ok
und nur nach dem gehen mit Datei-Operationen.Nun, es wird funktionieren !
Wir sollten das hinzufügen von Eigenschaften, um die dialogbox, bevor Ihr tatsächlich gezeigt worden ist. Also wenn man es öffnet, wird es alle diese Eigenschaften, wenn Sie Sie öffnen für die erste Zeit.
Edit :okay, Sie haben Hinzugefügt, um die designer durch die toolbox schon und die standardmäßig alle Optionen. aber wenn einige hinzufügen von code. es sollte immer vor Ihr gezeigt wird. Ich lasse diese hier. also, dass jemand, der dies tut
this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
im code, wird wissen, dass Sie tun sollten, diese Eigenschaft hinaus, bevor das Dialogfeld angezeigt. Wieder, diese wahren Werte sind standardmäßig so, wenn u haben erwähnt, false, bevor an anderer Stelle und machen es wahr Sie hier.
Können Sie tun es einfach so, anstatt
return fDialog.FileName;
undDialogResult.Cancel
ist eine bessere option, da Ihr auf der Suche für ein Abbrechen und nicht für das OK-Ergebnis.habe ich ein boolean und prüfen, ob Datei ausgewählt oder nicht
ich verhindern, dass dieser Fehler so.