Problem mit DialogResult.

Aj2010

Mitglied
Hallo. Ich hab mich etwas in der Msdn umgesehen und im Internet. Ich habe überall das Gleiche gelesen. Normalerweise funktioniert das auch anscheinend. Selbst in der MSDN.

Hier mein Code:
Code:
void Form1::sicherheitsAbfrage() {
		System::Windows::Forms::DialogResult ^dr = MessageBox::Show("Wollen Sie speichern?", "Beenden",  MessageBoxButtons::YesNoCancel, MessageBoxIcon::Question);

		if(dr == DialogResult::Yes && img != nullptr) {
			speichern();
			this->Close();
		} else if(dr == DialogResult::No) {
			this->Close();
		} else
			return;
	}

Laut MSDN funktioniert das mit dem DialogResult genau so. Es funktioniert nur nicht. Der Compiler gibt mir folgende Fehlermeldungen.

Form1.cpp(256): error C2039: 'Yes': Ist kein Element von 'System::Windows::Forms::Form::DialogResult'
c:\users\ajacobs\documents\visual studio 2010\projects\prüfung\prüfung\Pruefung_hinzufuegen.h(20): Siehe Deklaration von 'System::Windows::Forms::Form::DialogResult'
Form1.cpp(256): error C2065: 'Yes': nichtdeklarierter Bezeichner
Form1.cpp(259): error C2039: 'No': Ist kein Element von 'System::Windows::Forms::Form::DialogResult'
c:\users\ajacobs\documents\visual studio 2010\projects\prüfung\prüfung\Pruefung_hinzufuegen.h(20): Siehe Deklaration von 'System::Windows::Forms::Form::DialogResult'
Form1.cpp(259): error C2065: 'No': nichtdeklarierter Bezeichner

wisst ihr was dazu?
 
Zuletzt bearbeitet:
Ich denke der Namespace lautet "System.Windows.Forms.DialogResult" und nicht "System.Windows.Forms.Form.DialogResult".
Ändere "DialogResult::Yes" in "System::Windows::Forms::DialogResult::Yes"
(Übrigens: Wenn du die die Option "Grafische Smileys deaktivieren" für deinen obigen Post wählst, dann wird in "Forms:DialogResult" kein Smiley angezeigt wird)
 
Zuletzt bearbeitet:
Ah. Habs eben mal gemacht. Das komische ist, in der MSDN steht das auch so, wie ich das geschrieben hatte... C# hätte gewusst was ich will... -.- Ich hab die "." durch "::" ersetzt und es läuft nun ohne Probleme =) Ich danke dir. Jetzt kommt nur noch der Part des UNDO-REDO (der andere thread wegens zeichnen) und dann hab ich es geschafft ^^
 
So, jetzt hab ich nen Problem...

Code:
void Form1::sicherheitsAbfrage() {
		System::Windows::Forms::DialogResult ^dr = MessageBox::Show("Wollen Sie speichern?", "Beenden",  MessageBoxButtons::YesNoCancel, MessageBoxIcon::Question);

		if(dr == System::Windows::Forms::DialogResult::Yes && img != nullptr) {
			speichern();
			this->Close();
		}
		if(dr == System::Windows::Forms::DialogResult::No) {
			this->Close();
		} else {
			return;
		}
	}

Das ist mein Code. Ich hab jetzt das Problem, dass er weder das Speichern ausführt (was mit meinem Speicherevent im Menü geht und auch in der Methode schon funktioniert hat) noch dass er das Programm schließt.

Es macht nach der MessageBox einfach nichts mehr...

Es gibt aber auch keine Compiler- errors... Ich bin da grad etwas Ratlos

Hab grad gelesen, dass der Wert in dr "System::Enum::No" ist, wenn ich Nein anklicke.

Ich kann die Abfrage der If-Bedingung aber auch nicht auf "if(dr == System::Enum::No)" ändern, da dies dann nen Compilerfehler verursacht...
 
Zuletzt bearbeitet:
Ja. daher weiß ich ja, dass es "System::Enum::No oder Yes" ist. Deswegen komm ich da auch grad nich weiter... Ich hab in der einen Methode 4 Break Points gesetzt um zu gucken was da falsch läuft...
 
Dann geh mit dem Debugger doch mal Schritt für Schritt durch, dann solltest du sehen können, was schief läuft. Evtl. ist "img" == nullptr?
 
neee. das definitiv nicht. ich überprüf ja ob nen foto geladen wurde oder nicht mit dem "img != nullptr". bei dem No wird das ja nichtmal überprüft, da es eh nichts zu speichern gibt.


System::Enum::No

das steht in der Variablen nach auswahl von nein.
Hab mir das grad mal angesehen:

"System::Windows::Forms::DialogResult::No" hat den Wert 7 im Debugger

dr siehe oben. hä?

ganz ehrlich, ich steh aufm schlauch. zumal in der msdn nichts anderes steht als ich im programm hab....
 
Zuletzt bearbeitet:
Geh mit dem Debugger Schritt für Schritt durch (ich glaube das geht mit F10 oder F11).

Mit F10 geht man Schritt für Schritt (also Zeile für Zeile weiter) und mit F11 kann man sogar in die Funktionen die aufgerufen werden reingehen :D (zumindest in der Standard-Einstellung).

@Aj2010:
Besteht die Möglichkeit, dass du uns die ganze Klasse zur Verfügung stellen könntest? Dann könnte ich auch mal debuggen (habe einfach keine Zeit mir eigene Beispiele dafür auszudenken!).
 

Neue Beiträge

Zurück