Entwickler-Ecke
Basistechnologien - seltsames Verhalten mit DialogResult
Christoph1972 - Fr 13.02.09 00:18
Titel: seltsames Verhalten mit DialogResult
Hallo zusammen,
ich rufe ein Form mit .ShowDialog() auf. Aus diesem rufe ich mit einem Button folgenden Code auf:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| switch (DialogResult = MessageBox.Show("Soll das Projekt: " + listBox1.SelectedItem.ToString() + " gelöscht werden?", "Projekt löschen", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) { case DialogResult.Yes:
break; default: break; } |
Nach dem Code Block wird aber immer das Form geschlossen. An dem Code in den case Blöcken liegt es nicht, den habe ich auskommentiert. Wie kann das sein, was passiert hier? Ich habe es statt swich auch schon mit if then versucht, das Ergebnis ist aber das Selbe. Das muss doch irgendwie an dem DialogResult liegen......
Gruß
Christoph
jaenicke - Fr 13.02.09 00:48
Du weist DialogResult des aktuellen Formulars zu (DialogResult = MessageBox.Show(..."), und damit wird automatisch das Formular geschlossen.
Warum soll denn das DialogResult des Formulars überhaupt das DialogResult der MessageBox bekommen? :gruebel:
Christoph1972 - Fr 13.02.09 09:27
jaenicke hat folgendes geschrieben : |
| Warum soll denn das DialogResult des Formulars überhaupt das DialogResult der MessageBox bekommen? :gruebel: |
Ich verstehe nicht was du damit meinst? Gehört das DialogResult zu dem Form und ist nicht allgemein?
Gruß
Christoph
Christoph1972 - Fr 13.02.09 09:54
Ah, man bin ich blöd.
C#-Quelltext
1: 2:
| DialogResult DR = new DialogResult(); switch (DR = MessageBox.Show(....... |
Ok, vielen Dank. Das war mal wieder Quatsch^3 :oops:
Gruß
Christoph
JüTho - Fr 13.02.09 10:38
Hallo Christoph,
Das würde ich nie so formulieren, aber wenn Du es sagst... :wink:
Es gibt überhaupt keinen Grund, das Ergebnis der MessageBox zwischenzuspeichern, weil Du es nur im switch abfragen willst. Also statt:
Christoph1972 hat folgendes geschrieben : |
C#-Quelltext 1: 2:
| DialogResult DR = new DialogResult(); switch (DR = MessageBox.Show(....... | |
geht es einfacher:
C#-Quelltext
1:
| switch( MessageBox.Show(....... |
Denn zuerst wird dieses Show ausgeführt und dann dessen DialogResult an das switch übergeben - das ist alles.
Du solltest auch einmal
NET Richtlinien für Namen [
http://msdn.microsoft.com/de-de/library/ms229002(VS.80).aspx] (mit Groß- und Kleinschreibung) durchlesen und beachten, dass Namen von Klassen und Elementen (Membern) möglichst nicht als Namen für eigene Variable benutzt werden sollten.
Gruß Jürgen
Christoph1972 - Fr 13.02.09 10:51
Super, danke für den Tipp. Ich habe das aus einem Buch übernommen. Als Einsteiger bleibt einem ja nichts weiter über, als anzunehemen, das es richtig ist, was dort geschrieben wird.
Ich werde das mit den Richtlinien für Namen mal lesen. Aber wo habe ich den dagegen verstossen?
Gruß
Christoph
JüTho - Fr 13.02.09 15:23
Christoph1972 hat folgendes geschrieben : |
| Aber wo habe ich den dagegen verstossen? |
Eigentlich (diesmal) gar nicht. Aber beim ersten Code weist Du das Ergebnis von MessageBox.Show einer Variablen (nämlich DialogResult) zu. Dies ist gleichzeitig der Name einer Enumeration und einer Eigenschaft eines jeden Formulars. Wenn Du bei Namen "eigener Variablen" auf die Regeln achtest, fällt Dir sofort auf, dass DialogResult zumindest keine eigene Variable sein kann; deren Verwendung ist an der Stelle vor switch jedenfalls seltsam und sollte Dich aufmerksam machen.
| Zitat: |
| Als Einsteiger bleibt einem ja nichts weiter über, als anzunehemen, das es richtig ist, was dort geschrieben wird. |
Du merkst, dass aufmerksames Lesen und Mitdenken immer nützlich ist. Richtige Fehler findet man in Büchern eher selten, aber Sachen, die unpraktisch sind oder in die falsche Richtung führen, kommen häufiger vor.
Viel Erfolg weiterhin! Jürgen
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!