Archiv verlassen und diese Seite im Standarddesign anzeigen : C# MessageBox Problem
PeterParty
24.03.2011, 15:55
Hi,
Erstmal der 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
Wenn nicht1 == true || nicht2 == true || nicht3 == false
Ist das so gewollt?
PeterParty
24.03.2011, 16:07
Hi,
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
MacGyver
24.03.2011, 16:08
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));
if (! (n1 && n2 && n3))
MessageBox.Show(string.Format("{0}{1}{2}", n1 ? "" : "Fehler 1, ", n2 ? "" : "Fehler 2, ", n3 ? "" : "Fehler 3"));
das Neutrum
24.03.2011, 16:13
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
PeterParty
24.03.2011, 16:15
Hi,
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 vom 24.03.2011 16:18 Uhr:
@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
\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());
\r\n
Environment.NewLine wäre da aber besser.
PeterParty
24.03.2011, 16:22
Dankeschön:)
hat jetzt alles Funktioniert.....
Mfg
Peter
Black_Panter
24.03.2011, 16:24
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!
PeterParty
24.03.2011, 16:41
Hi,
Danke für eure Tipps!
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?
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.
class DasIstEineKlasse
{
void MeineMethode(){
int dasIstEinFehler;
}
}
PeterParty
24.03.2011, 17:07
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
MacGyver
24.03.2011, 17:11
Die Dokumentation und Intellisense sollten doch eigentlich deine Frage beantworten
http://msdn.microsoft.com/de-de/library/system.windows.forms.messagebox.aspx
Zuerst mußt du festlegen welche Buttons zur Beatwortung deiner Message angezeigt werden sollen.
Dann kommt erst das Icon.
PeterParty
24.03.2011, 17:15
Danke:)
hat alles Funktioniert....
Mfg
Peter