C# MessageBox Problem

PeterParty

Lt. Junior Grade
Registriert
Aug. 2008
Beiträge
282
Hi,
Erstmal der Code:

Code:
            string fehler1 = "";
            string fehler2 = "";
            string fehler3 = "";
            if (nicht1 == false)
            {
                fehler1 = "1";
            }
            if (nicht2 == false)
            {
                fehler2 = "2";
            }
            if (nicht3 == false)
            {
                fehler3 = "3";
            }
            if (nicht1 || nicht2 || nicht3 == false)
            {
                MessageBox.Show(fehler1, fehler2, fehler3);
            }

Ich habe 3 String variablen die "befüllt" werden wenn ein gewisser wert flase ist.
Nun mein Probem, Wie kann ich in der MessageBox die 3 String Werte anzeigen lasse? so wie ich es gemacht habe mit einem "," funktioniert es leider nicht.

Ich hoffe ihr wisst was ich meine

Mfg
Peter
 
wie wäre es wenn du die Strings vorher mit String.Concat zusammenfasst und dann den zusammengefassten String in der MessageBox anzeigts?;)
 
Dei If-Statement besagt

Code:
Wenn nicht1 == true || nicht2 == true || nicht3 == false


Ist das so gewollt?
 
Hi,

Code:
            string fehler1 = "";
            string fehler2 = "";
            string fehler3 = "";
            fehler = string.Concat(fehler1, fehler2, fehler3);
            if (nicht1 == false)
            {
                fehler1 = "1";
            }
            if (nicht2 == false)
            {
                fehler2 = "2";
            }
            if (nicht3 == false)
            {
                fehler3 = "3";
            }
            if (nicht1 == false || nicht2 == false|| nicht3 == false)
            {
                MessageBox.Show(fehler);
            }

Nein das war nicht gewollt, danke für deinen Tipp:)

Jetzt noch ein kleines Problem, es wird kein Fehler ausgegeben...d.H Die Messagebox bleibt immer lehr.

Woran kann das liegen?

Mfg
Peter
 
Ja, und wenn die Texte nicht nur rausgerotzt werden, sondern auch noch schön formatiert ausgegeben werden sollen, dann kann man mit String.Format die Zusammenfassung und das Formatieren in einem Abwasch erledigen.

Zum Beispiel so: String.Format("{0}, {1}, {2}", fehler1, fehler2, fehler3)
Die 3 Texte werden den 3 Positionen 0,1,2 zugeordnet und die Ausgabe ist demnach
die Fehlernachricht mit Kommata getrennt und noch einem Leerzeichen dabei.

Wenn man String.Format("{0}\n{1}\n{2}",fehler1,fehler2,fehler3) benutzt wird jeder Text in eine eigene Zeile geschrieben usw.

Edit: Das keine Fehler ausgegeben werden liegt da dran, weil dur Concat schon aufrufst wenn die einzelnen Fehlervariablen noch leer sind.
Wenn dir Concat reicht, würde ich es einfach in der MessageBox verwenden.
MessageBox.Show(String.Concat(fehler1,fehler2,fehler3));
 
Zuletzt bearbeitet:
Code:
if  (! (n1 && n2 && n3))
MessageBox.Show(string.Format("{0}{1}{2}", n1 ? "" : "Fehler 1, ", n2 ? "" : "Fehler 2, ", n3 ? "" : "Fehler 3"));
 
Code:
            string fehler1 = "";
            string fehler2 = "";
            string fehler3 = "";
            
            if (nicht1 == false)
            {
                fehler1 = "1";
            }
            if (nicht2 == false)
            {
                fehler2 = "2";
            }
            if (nicht3 == false)
            {
                fehler3 = "3";
            }

            fehler = string.Concat(fehler1, fehler2, fehler3);

            if (nicht1 == false || nicht2 == false|| nicht3 == false)
            {
                MessageBox.Show(fehler);
            }

so müsste es gehen.
mit deinem code wurde fehler nämlich als fehler1+fehler2+fehler3 gespeichert, die du kurz vorher aber leer gespeichert hast.
 
@PeterParty: Ich verstehe nicht warum Leute wie du sich schon mit Forms auseiander setzen und nicht mal einen Hauch einer Ahnung von den Grundlagen haben:rolleyes:
 
Hi,
Code:
            string fehler1 = "";
            string fehler2 = "";
            string fehler3 = "";            
            if (nicht1 == false)
            {
                fehler1 = "Die Eingabe unter a2 war Fehlerhaft!";
            }
            if (nicht2 == false)
            {
                fehler2 = "Die Eingabe unter a1 war Fehlerhaft!";
            }
            if (nicht3 == false)
            {
                fehler3 = "Die Eingabe unter a0 war Fehlerhaft!";
            }
            if (nicht1 == false || nicht2 == false|| nicht3 == false)
            {
                fehler = string.Format("{0}, {1}, {2}", fehler1, fehler2, fehler3);
                MessageBox.Show(fehler);
            }

Die Ausgabe funktioniert...Nur das /n für den Zeilenumbruch funktioniert lieder nicht:(
Kann mir da noch einer den Syntax nennen?
Mfg
Peter
Ergänzung ()

toeffi schrieb:
@PeterParty: Ich verstehe nicht warum Leute wie du sich schon mit Forms auseiander setzen und nicht mal einen Hauch einer Ahnung von den Grundlagen haben:rolleyes:


Ja,ich verstehe das auch nicht so ganz warum wir in der Schule nicht mit Konsolenanwendung angefangen haben...:(
Nun ist das Problem das die lehrer nichts drauf haben und wir bis in 2 Wochen ein feritges Projekt abgeben sollen...

Mfg Peter
 
Zuletzt bearbeitet:
\r\n

Am besten du machst es so:

Stringbuilder sbFehler = new Stringbuilder();

if (!n1)
sbFehler.AppendLine("Fehler 1");

if (!n2)
sbFehler.AppendLine("Fehler 2");

if (!n3)
sbFehler.AppendLine("Fehler 3");

if (sbFehler.ToString() != "")
MessageBox.Show(sbFehler.ToString());
 
Zuletzt bearbeitet:
kleine anmerkung am rande:
statt
if (nicht1 == false || nicht2 == false|| nicht3 == false)
{
fehler = string.Format("{0}, {1}, {2}", fehler1, fehler2, fehler3);
MessageBox.Show(fehler);
}

reicht es wenn du
if (!nicht1 || !nicht2 || !nicht3)
{
fehler = string.Format("{0}, {1}, {2}", fehler1, fehler2, fehler3);
MessageBox.Show(fehler);
}
machst.

wenn nicht1 z.b. jetzt den wert "false" hat, würde die abfrage "false == false" sein, was wiederum true ergibt. Genauso kann man jedoch die variable schlicht negieren.

Das gleiche gilt auch für die If-abfragen.
 
Haben die Variablen wirklich die Namen fehler1, fehler2 und fehler3(EDIT: bzw. nicht1, nicht2 und nicht3)?
Wenn ja, dann würde ich am besten auch mal schauen denen mal aussagekräftige Namen zu geben.
Wenn du dir den Code nämlich so mal nach einigen Wochen(manchmal sogar Tagen oder Stunden^^) nochmal anschaust oder überarbeiten willst, wirst garantiert nicht mehr wissen was für ein Fehler fehler1(nicht1) war!
 
Hi,
Danke für eure Tipps!
Code:
            string eing_fehler_a2 = "";
            string eing_fehler_a1 = "";
            string eing_fehler_a0 = "";
            if (conv_error_a2 == false)
            {
                eing_fehler_a2 = "Die Eingabe unter a2 war Fehlerhaft!";
            }
            if (conv_error_a1 == false)
            {
                eing_fehler_a1 = "Die Eingabe unter a1 war Fehlerhaft!";
            }
            if (conv_error_a0 == false)
            {
                eing_fehler_a0 = "Die Eingabe unter a0 war Fehlerhaft!";
            }
            if (!conv_error_a2 || !conv_error_a1 || !conv_error_a0)
            {
                fehler = string.Format(" {0}\n {1}\n {2}\n", eing_fehler_a2, eing_fehler_a1, eing_fehler_a0);
                MessageBox.Show(fehler,"Fehlerhafte Eingabe");                
            }

Noch eine kleine Frage:
Wie bekomme ich das MessageBoxIcon.Error angezeigt?
Code:
MessageBox.Show(fehler, "Fehlerhafte Eingabe", MessageBoxIcon.Error);
Wenn ich das so mache bekomme ich eine Fehlermeldung...


Mfg
Peter
 
Achja und ich würde den Code von Orbmu2k nehmen(Nur halt mit gescheiten Namen für die Variablen).
Zu den Variablen Namen sei gesagt das bei C# vorrangig die Höckerschreibweise genutzt wird.

- Variablen haben einen kleinen Anfangsbuchstaben und neue Worte beginnen mit großen.
- Methoden und Klassen beginngen mit Großbuchstaben.
Code:
class DasIstEineKlasse
{
  void MeineMethode(){
    int dasIstEinFehler;
  }
}
 
Hi,
Sorry ich habe den Code von Orbmu2k gar nicht gesehen:rolleyes:

jetzt habe ich ihn natürlich umgesetzt...


Das einzige Problem ist noch das mit dem "MessageBoxIcon.Error".

Mfg
Peter
 
Zurück
Oben