Benutzer mit den meisten Antworten
Probleme mit ComboBox.Items.Clear ???

Frage
-
Hallo.
Ich versuche mich gerade an einer App für W10Mobile, die ich aber zuerst auf meinem Computer teste.
Es funktioniert auch soweit ganz gut aber irgendwie komme ich jetzt nicht weiter.
Ich habe mal meinen C# Code angehängt:
namespace Werkzeugliste { /// <summary> /// Eine leere Seite, die eigenständig verwendet oder zu der innerhalb eines Rahmens navigiert werden kann. /// </summary> public sealed partial class MainPage : Page { public static class Globals { public static string[,] WListe2 = new string[200, 10]; public static string[] WArt = { "JETO", "JETR", "JETQ", "JET", "MCJ", "DETO", "DETR", "DETQ", "DET", "DMCJ", "FD", "Andere" }; } public MainPage() { this.InitializeComponent(); int zahl = 0, i = 0, a = 0, b = 0; string Auswahl = "", temp = ""; XmlReader reader = XmlReader.Create("Werkzeuge.xml"); while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Text: Auswahl = reader.Value; Globals.WListe2[i, zahl] = Auswahl; zahl++; if (zahl > 8) { Auswahl = Globals.WListe2[i, 0]; for (a = 0; a <= 10; a++) { temp = Globals.WArt[a]; b = Auswahl.IndexOf(temp); if (b >= 0) { Globals.WListe2[i, zahl] = temp; a = 10; } } if (Globals.WListe2[i,9] == "") { Globals.WListe2[i, 9] = Globals.WArt[11]; } zahl = 0; i++; } break; } } for (i = 0; i <= (Globals.WArt.Length - 1); i++) { Auswahl = Globals.WArt[i]; coWAuswahl.Items.Add(Auswahl); } coWAuswahl.SelectedIndex = 0; Boxfuellen(); } private void coAuswahl_SelectionChanged(object sender, SelectionChangedEventArgs e) { WDaten(coAuswahl.SelectedItem.ToString()); } private void coWAuswahl_SelectionChanged(object sender, SelectionChangedEventArgs e) { Boxfuellen(); } public void Boxfuellen() { int q = 0; string Auswahl = "", temp = ""; temp = Globals.WArt[coWAuswahl.SelectedIndex]; // coAuswahl.Items.Clear(); while (true) { Auswahl = Globals.WListe2[q, 0]; if (Auswahl == null) { break; } if (Globals.WListe2[q, 9] == temp) { coAuswahl.Items.Add(Auswahl); } q++; } coAuswahl.SelectedIndex = 0; WDaten(coAuswahl.SelectedItem.ToString()); } public void WDaten(string Auswahl) { int p = 0; string andere = ""; while (true) { andere = Globals.WListe2[p, 0]; if (Auswahl == andere) { listWDaten.Items.Clear(); listWDaten.Items.Add("Umfang : " + Globals.WListe2[p, 2]); listWDaten.Items.Add("Gewicht : " + Globals.WListe2[p, 7]); listWDaten.Items.Add("Gwicht mit KB : " + Globals.WListe2[p, 8]); listWDaten.Items.Add("Soll Zyklus : " + Globals.WListe2[p, 3]); listWDaten.Items.Add("IML Zyklus : " + Globals.WListe2[p, 4]); listWDaten.Items.Add("KB Zyklus : " + Globals.WListe2[p, 5]); listWDaten.Items.Add("Soll Zyklus : " + Globals.WListe2[p, 3]); listWDaten.Items.Add("Kavitäten : " + Globals.WListe2[p, 1]); listWDaten.Items.Add("Kategorie : " + Globals.WListe2[p, 6]); break; } p++; } } } }
Wie in dem Code zu sehen ist musste ich die coAuswahl.Items.Clear() still legen.
Wenn ich diese Zeile benutze ( und das ist mein Problem weil ich brauche die ) kommt eine NullReferenceException Fehlermeldung.
Seltsamerweise, wenn ich diese Zeile lasse und dafür die Zeile Boxfuellen() in coWAuswahl_SelectionChanged still lege läuft das Programm auch.
Also entweder Boxfuellen() oder coAuswahl.Items.Clear().
Hat jemand eine Idee warum das so ist ?
Ich kann leider kein Bild anhängen weil mein Konto noch geprüft wird.
Gruß,
Oetti
Antworten
-
Du führst doch auch 2 mal Boxfuelen aus.
Durch setzten des Index mit coWAuswahl.SelectedIndex = 0; löst du coWAuswahl_SelectionChanged aus
Und dann gleich nochmal darunter
Das ist ein klassischer Logikfehler.
Setzte einfach bitte in alle Methoden breakpoints und schau dir das an
Icon für UWP: https://www.microsoft.com/store/apps/9nblggh5fzpm
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 24. Oktober 2016 13:23
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 4. November 2016 07:41
Alle Antworten
-
Hallo Thomas.
Wie schon oben beschrieben funktioniert coAuswahl.Items.Clear() wenn ich die Boxfuellen() still lege.
Dann sind die Daten in coAuswahl gelöscht. Andersherum funktioniert Boxfuellen(), nur seltsamerweise sind die Daten in coAuswahl dann doppelt.
Und die erste Fehlermeldung kommt dann bei coAuswahl_SelectionChangend bei WDaten(coAuswahl.SelectedItem.ToString(). Dort ist der Wert dann NULL.
Ich hatte auch schon versucht mit einer Schleife die Items in coAuswahl zu löschen und dann neu zu füllen.
Funktioniert aber nur wenn ich mindestens ein Item in coAuswahl lasse.
Wenn ich alle lösche ist direkt wieder die Fehlermeldung da.
(Kann leider immer noch kein Bild anhängen)
Gruß,
Oetti
-
Du führst doch auch 2 mal Boxfuelen aus.
Durch setzten des Index mit coWAuswahl.SelectedIndex = 0; löst du coWAuswahl_SelectionChanged aus
Und dann gleich nochmal darunter
Das ist ein klassischer Logikfehler.
Setzte einfach bitte in alle Methoden breakpoints und schau dir das an
Icon für UWP: https://www.microsoft.com/store/apps/9nblggh5fzpm
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 24. Oktober 2016 13:23
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 4. November 2016 07:41
-
Hallo Thomas.
Ich habe es hinbekommen. Ich musste wirklich das obere Boxfuellen() löschen, dann klappte es.
Und bei dem coAuswahl_SelectionChanged habe ich vor dem WDaten eine Abfrage eingebaut.
Jetzt läuft es so wie es soll.
Vielen Dank.
Gruß,
Oetti