C#InvalidOperationException

时间:2010-01-02 15:30:39

标签: 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);  
}  

我得到InvalidOperationException,应用程序崩溃了 无法得到原因。有帮助吗?感谢。

编辑:'N.NAME'打印!然后发生了崩溃 编辑2:我试图捕获异常,无论如何应用程序崩溃。

3 个答案:

答案 0 :(得分:1)

你在哪一行获得例外?在不知道listBox_nodos具有什么数据类型的情况下,我的第一个猜测是Items不包含大量string s,而是ListBoxItem s

foreach (var item in listBox_nodos.Items)  
{  
    N = graph.getNodoName(item.Value); // or .SomethingElse

答案 1 :(得分:1)

  • 如前所述,完整的异常会很好看(如果在VS调试器中,你可以从异常帮助器对话框或调试中的$ exception条目 - > Windows - > Locals)获取它。最坏的情况你应该能够尝试{..} catch(Exception ex){System.Console.WriteLine(ex); (Exception的ToString包含堆栈跟踪)

    • 如果你不确定所涉及的类型,可以将Items / SelectedItem作为IEnumerable / object,然后在它们上面获取gettype()并显示它。
  • 在尝试显示内容时,可能还想尝试使用MessageBox.Show以防万一由于某种原因来自使用Console的异常。

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

答案 2 :(得分:0)

之前我遇到过类似的问题,也与选定的项目有关。我对它进行了广泛的调查,但无法找到解决办法。我最终结束了改造形式(虽然我认为控制是必要的),这似乎解决了它。