C#无效操作例外
我得到了InvalidOperationException,应用程序崩溃。C#无效操作例外,c#,invalidoperationexception,C#,Invalidoperationexception,我得到了InvalidOperationException,应用程序崩溃。 我不明白为什么。有什么帮助吗?谢谢 编辑:“N.NAME”打印出来!然后坠机了。 EDIT2:我试图捕获异常,但应用程序还是会崩溃。在哪一行获得异常?如果不知道listBox\u nodos有什么数据类型,我的第一个猜测可能是Items不包含很多strings,而是ListBoxItems Nodo N; foreach (string S in listBox_nodos.Items) { N =
我不明白为什么。有什么帮助吗?谢谢 编辑:“N.NAME”打印出来!然后坠机了。
EDIT2:我试图捕获异常,但应用程序还是会崩溃。在哪一行获得异常?如果不知道
listBox\u nodos
有什么数据类型,我的第一个猜测可能是Items
不包含很多string
s,而是ListBoxItem
s
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);
}
- 如前所述,完整的异常很容易看到(如果在VS调试器中,您可以从异常帮助器对话框或调试->窗口->局部变量中的$exception条目中获得它)。最坏的情况是,您应该能够尝试{..}catch(异常ex){System.Console.WriteLine(ex);(异常的ToString包括堆栈跟踪)
- 如果您不确定所涉及的类型,可以将Items/SelectedItem作为IEnumerable/object获取,然后在其上获取gettype(),并显示它
- 在尝试显示内容时,可能还希望尝试MessageBox.Show,以防由于某些原因使用控制台时出现异常
- 与异常无关,但看起来您正在对列表框项目进行交互以查找所选项目-如果是这样,为什么不直接使用所选项目呢
.ToList()
或.ToArray()创建集合的副本
在您的foreach
中。您可能会发现异常完全是在其他地方生成的。您可以发布整个异常消息吗?异常消息:System.Windows.Forms.dllI中发生了类型为“System.InvalidOperationException”的第一次意外异常。堆栈跟踪等等。不知道如何获取该信息。T感谢您的帮助,异常已被消除。我将.Item更改为.SelectedItemsThanks供您使用!是的,确实如此。我现在无法将信息放在这里,因为我的应用程序已经升级,代码完全不同。我没有直接使用该项,因为列表框只是一个表示对象数组列表的字符串集合。我是stu登特和这个网站和评论对我很有帮助,真的很感谢你抽出时间。
foreach (var item in listBox_nodos.Items)
{
N = graph.getNodoName(item.Value); // or .SomethingElse