Laden...

Fehlermeldung beim Anzeigen von OpenFileDialog: "Dialoge müssen vom Benutzer eingeleitet werden"

Erstellt von rollerueckwaerts vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.781 Views
R
rollerueckwaerts Themenstarter:in
57 Beiträge seit 2010
vor 12 Jahren
Fehlermeldung beim Anzeigen von OpenFileDialog: "Dialoge müssen vom Benutzer eingeleitet werden"

Hallo,

ich habe eine MessageBox in dem ich den Nutzer frage ob er eine Datei auswählen möchte oder nicht:


  MessageBoxResult result =  MessageBox.Show("Datei konnte nicht gelesen werden. Andere Datei wählen?","Falches Format", MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
                {
                    OpenFileDialog();
                }

Nun bekomme ich den Fehler

Fehlermeldung:
Dialoge müssen vom Benutzer eingeleitet werden

wobei ich mich frage ob in einer MessageBox auf "Ja" zu klicken wohl keine Benutzeraktion sein soll ... Naja nun gut ^^

Ich weiß natürlich das ich eine Methode a lá ButtonClicked(object sender, EventArgs e) brauche um da meinen Dialog zu öffnen, gibt es vielleicht eine Möglichkeit eine solche Methode auszufüren sobald man auf das JA in der MessageBox klickt ?

Muss doch irgendwie möglich sein 😃

Lieben Dank schon jetzt, hoffe jemand hat nen Tipp für mich

B
357 Beiträge seit 2010
vor 12 Jahren

Kannst du etwas genauer ausführen, was du da eigentlich machen willst bzw. wie deine restliche Anwendung aussieht? Ich sehe da nämlich kein Problem.

K
85 Beiträge seit 2008
vor 12 Jahren

Hallo,

Steht doch eigentlich schon da, oder verstehe ich dich falsch?


if (result == MessageBoxResult.OK)
{
                    //ButtonClicked
}

An die Stelle //ButtonClicked kannst du doch jetzt die Methode packen die beim "ClickEvent" ausgeführt werden soll.

Oder hast du eine MsgBox mit Yes/No? Dann musst du natürlich bei DialogResult auf Yes und nicht OK prüfen.

Lg Karim

W
196 Beiträge seit 2008
vor 12 Jahren

Ich vermute fast, dass die Zeile OpenFileDialog(); Dein wahres Problem ist. OpenFileDialog ist eine Klasse. Du musst also erstmal ein Objekt dieser Klasse erzeugen, bevor Du den Dialog anzeigen kannst. Etwa so

using (OpenFileDialog dlg = new OpenFileDialog()) {
   if (dlg.ShowDialog(parent) = DialogResult.OK) {
      // hier dann z.B. die ausgewählte Datei öffnen
   }
}
R
rollerueckwaerts Themenstarter:in
57 Beiträge seit 2010
vor 12 Jahren

huhu,

hatte nicht so viel Zeit aber bin wieder da 😃

Also das Problem besteht weiterhin. Ich bekomme die Meldung:> Fehlermeldung:

Dialoge müssen vom Benutzer eingeleitet werden

OpenFileDialog() ist keine Klasse sondern eine Methode in der unter anderen das hier steht: Bei dieser Zeile kommt nämlich auch die Fehlermeldung.


 bool? dialogResult = _openFileDialog.ShowDialog();

Ich habe ja bereits gegoogelt und erfahren das der Dialog nur gezeigt wird wenn das ganze in einer "Button-Event-Click"-Methode drinsteht.

Nur wie kann ich das anstellen ?

Hab es bereits so verucht, ohne Erfolg:


 MessageBoxResult result =  MessageBox.Show("Datei konnte nicht gelesen werden. Andere Datei wählen?","Falches Format", MessageBoxButton.OKCancel);

if (result == MessageBoxResult.OK) {
     button1_Click(null,null);
 }

private void button1_Click(object sender, RoutedEventArgs e) {
.....
 bool? dialogResult = _openFileDialog.ShowDialog();
.....
}

Aber wieder die Fehlermeldung :8

H
15 Beiträge seit 2009
vor 12 Jahren

Aus

bool? dialogResult = _openFileDialog.ShowDialog();

schließe ich, dass du den OpenFileDialog aus Microsoft.Win32 oder so verwendest. Die ist AFAIK eher für WPF gedacht. Versuchs mal mit der aus System.Windows.Forms. Mit der hatte ich nie Probleme, sie aus beliebigen Methoden zu zeigen.

R
rollerueckwaerts Themenstarter:in
57 Beiträge seit 2010
vor 12 Jahren

Sorry ... es geht dabei um eine Silverlightanwendung.
Bin dann wohl im falschen Unterforum gelandet 😃

Hinweis von winSharp93 vor 12 Jahren

Ok, ich hab's verschoben

P
660 Beiträge seit 2008
vor 12 Jahren

Das problem entsteht wenn du einen Breakpoint vor z. B. OpenFileDialog.ShowDialog() (habe die Methode nicht ganz im Kopf) setzt. Setze den Breakpoint hinter die entsprechende Zeile

MfG
ProGamer*Der Sinn Des Lebens Ist Es, Den Sinn Des Lebens Zu Finden! *"Wenn Unrecht zu Recht wird dann wird Widerstand zur Pflicht." *"Ignorance simplifies ANY problem." *"Stoppt die Piraterie der Musikindustrie"

5.742 Beiträge seit 2007
vor 12 Jahren

Siege generell auch Simple silverlight open-file-dialog errors; du kannst nur einen Dialog pro "User-Interaktion" öffnen.