C# InvalidOperationException
Nodo N;
foreach (string S in listBox_nodos.Items)
{
N = graph.getNodoName(S);
string comp = (string) listBox_nodos.SelectedItem;
if (comp == S)
System.Console.WriteLine(N.NAME);
}
Bekomme ich InvalidOperationException
und stürzt die Anwendung ab.
Kann nicht, warum. Keine Hilfe? Danke.
EDIT: Die "N. NAME" druckt! Und dann geht der Absturz.
EDIT2: ich habe versucht, um die Ausnahme zu fangen, stürzt die Anwendung sowieso.
finden Sie die Ausnahme erzeugt wird, die ganz woanders. kannst du die komplette exception-Meldung?
Exception message: A first chance exception of type 'System.InvalidOperationException' ist in System.Windows.Forms.dll
Ich meinte mehr als das - stack-trace, etc.
Weiß nicht, wie man diese info. Danke für die Hilfe, die Ausnahme verschwanden. Ich geändert .Artikel zu .SelectedItems
Exception message: A first chance exception of type 'System.InvalidOperationException' ist in System.Windows.Forms.dll
Ich meinte mehr als das - stack-trace, etc.
Weiß nicht, wie man diese info. Danke für die Hilfe, die Ausnahme verschwanden. Ich geändert .Artikel zu .SelectedItems
InformationsquelleAutor Ricardo | 2010-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bei welcher Zeile bekommst du die Ausnahme? Ohne zu wissen, welchen Datentyp
listBox_nodos
hat, meine erste Vermutung w2ould werden, dassItems
enthält nicht vielstring
s, sondernListBoxItem
sDas Problem ist gelöst. Ich änderte listBox_nodos.Elemente listBox_nodos.SelectedItems. Aber trotzdem, ich kann nicht der Grund für die Ausnahme
Die foreach-Schleife löst diese Ausnahme aus, wenn Sie ändern Sie die Items-Auflistung innerhalb der Schleife. Mit SelectedItems stattdessen könnte in der Tat verhindern, dass, solange Sie nicht ändern Sie die ausgewählten Elemente.
Vielen Dank, jetzt hab ich den Grund für die Ausnahme.
Sie können auch versuchen, mithilfe von Linq to erstellen Sie eine Kopie der Sammlung über
.ToList()
oder.ToArray()
in Ihremforeach
.InformationsquelleAutor David Hedlund
wie bereits erwähnt, die volle Ausnahme wäre schön zu sehen (wenn in der VS-debugger, können Sie es von der Ausnahme-Helfer-dialog oder der $Ausnahme-Eintrag in der Debug -> Windows -> die Einheimischen). Worst-case-Sie sollten in der Lage sein try { .. } catch (Exception ex) {- System.Console.WriteLine(ex); (Ausnahme ToString enthält der stack-trace)
wenn Sie versuchen, um Dinge anzuzeigen, können Sie auch wollen, versuchen Sie, MessageBox.Zeigen nur im Fall der Ausnahme, die aus der Nutzung der Konsole aus irgendeinem Grund.
die sich nicht auf die Ausnahme, aber es sieht aus wie du bist interating über die listbox-Elemente zu finden, die das ausgewählte Element - wenn das wahr ist, warum man nicht einfach das ausgewählte Element direkt?
InformationsquelleAutor James Manning
Ich hatte ein ähnliches problem vor, aber auch in Bezug auf ausgewählte Elemente. Ich untersuchte ihn ausgiebig und war nicht in der Lage eine Lösung finden. Ich schließlich die Wunde, bis die Erneuerung der form (obwohl ich glaube, nur die Steuerung war notwendig) und das schien zu beheben.
InformationsquelleAutor Paul Draper