C#无效操作例外

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 =

我得到了InvalidOperationException,应用程序崩溃。
我不明白为什么。有什么帮助吗?谢谢

编辑:“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,以防由于某些原因使用控制台时出现异常

  • 与异常无关,但看起来您正在对列表框项目进行交互以查找所选项目-如果是这样,为什么不直接使用所选项目呢


我以前也遇到过类似的问题,也与选定的项目有关。我对其进行了广泛的调查,但未能找到解决方法。我最终重新制作了表单(尽管我认为只有控件是必要的)这似乎解决了问题。

当我向列表框添加项时,它们是字符串。我想我必须了解更多关于列表框的信息。问题解决了。我将listbox_nodos.items更改为listbox_nodos.SelectedItems。但是,我仍然无法找到异常的原因foreach循环在修改循环内的项集合时引发此异常。只要您不更改所选项目,改用SelectedItems确实可以避免这种情况。@nobugz谢谢,现在我知道了异常的原因。您也可以尝试使用Linq通过
.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