Wie kann ich eine Ausnahme verhindern, wenn ich einen Openfiledialog abbringe?

8

Mein Programm hat eine Schaltfläche, die beim Anklicken einen OpenFiledialog öffnet, um ein Bild auszuwählen:

%Vor%

Durch eine Überprüfung der Dialogresultate wurde mein Problem nicht gelöst:

%Vor%

Der Code funktioniert, wenn ich ein Bild wähle und die Dateiauswahl vervollständige. Aber wenn ich den Prozess zu irgendeinem Zeitpunkt dazwischen abbrechen, bekomme ich die Ausnahme "Der Pfad hat keine Rechtsform". Ich bin mir nicht sicher, welchen Teil ich mir vorstellen könnte, mit einem try-catch , aber ich bin nicht sicher, welcher Teil das Problem verursacht. Wenn ich einen try catch um den Aufruf der ChoosePicture() -Methode setze, kann ich zumindest verhindern, dass das Programm abstürzt, aber die Ausnahme wird immer noch geworfen, wenn kein Bild in der fdialogbox ausgewählt ist.

    
Fuzz Evans 05.01.2012, 20:54
quelle

6 Antworten

14
%Vor%

auch, FileName ist bereits eine Zeichenkette, also müssen Sie nicht .ToString() darauf verwenden

BEARBEITEN : feste Einrückung

    
Anthony Shaw 05.01.2012, 20:57
quelle
2

Überprüfen Sie das Ergebnis des Dialogs und handeln Sie entsprechend:

%Vor%     
Tudor 05.01.2012 20:58
quelle
1

Testen Sie, ob eine Datei ausgewählt wurde:

%Vor%     
competent_tech 05.01.2012 20:58
quelle
1

DialogResult dresult=fDialog.ShowDialog();

Überprüfen Sie, ob dresult==DialogResult.Ok und erst nach dem Dateivorgang fortfahren.

    
Tigran 05.01.2012 20:58
quelle
1
%Vor%

Jetzt wird es funktionieren!

Wir sollten der Dialogbox Eigenschaften hinzufügen, bevor sie tatsächlich angezeigt wurde. Wenn es geöffnet wird, hat es alle diese Eigenschaften, wenn Sie es zum ersten Mal öffnen.

Bearbeiten: Okay, Sie haben den Designer bereits mit der Toolbox hinzugefügt und standardmäßig alle diese Optionen. aber wenn einige aus Code hinzufügen. es sollte immer sein, bevor es gezeigt wird. Ich werde das hier lassen. so dass jemand, der das tut

this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();

im Code wird wissen, dass sie diese Eigenschaft hinzufügen sollten, bevor sie den Dialog zeigen. Auch hier sind diese wahren Werte standardmäßig so, es sei denn, du hast vorher falsch erwähnt und es hier wahr gemacht.

    
King 05.01.2012 21:12
quelle
0

Sie können es einfach so machen, anstatt return fDialog.FileName; und DialogResult.Cancel ist eine bessere Option, da Sie nach einem Abbrechen und nicht nach dem OK-Ergebnis suchen.

%Vor%     
Ryan Dooley 04.01.2017 15:45
quelle