Autor Beitrag
Christoph1972
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Fr 13.02.09 00:18 
Hallo zusammen,


ich rufe ein Form mit .ShowDialog() auf. Aus diesem rufe ich mit einem Button folgenden Code auf:
ausblenden 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:

  //Code.....

  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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19339
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Fr 13.02.09 09:27 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: Fr 13.02.09 09:54 
Ah, man bin ich blöd.


ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 13.02.09 10:38 
Hallo Christoph,

user profile iconChristoph1972 hat folgendes geschrieben Zum zitierten Posting springen:
Ah, man bin ich blöd.

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:
user profile iconChristoph1972 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
2:
DialogResult DR = new DialogResult();
            switch (DR = MessageBox.Show(.......

geht es einfacher:
ausblenden 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 (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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 690
Erhaltene Danke: 16


VS2015 Pro / C# & VB.Net
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Fr 13.02.09 15:23 
user profile iconChristoph1972 hat folgendes geschrieben Zum zitierten Posting springen:
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