1
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」が印刷されます! そして、クラッシュします。
EDIT2: 例外をキャッチしようとしましたが、とにかくアプリケーションがクラッシュします。

4

3 に答える 3

1

どの行で例外が発生しますか? データ型が何であるかを知らなくてlistBox_nodosも、私の最初の推測では、多くのs ではなくsがItems含まれている可能性がありますstringListBoxItem

foreach (var item in listBox_nodos.Items)  
{  
    N = graph.getNodoName(item.Value); // or .SomethingElse
于 2010-01-02T15:34:20.867 に答える
1
  • 前に述べたように、完全な例外が表示されると便利です (VS デバッガーの場合は、例外ヘルパー ダイアログまたは [デバッグ] -> [Windows] -> [ローカル] の $exception エントリから取得できます)。最悪の場合、 { .. } catch (Exception ex) { System.Console.WriteLine(ex); を試すことができるはずです。(例外の ToString にはスタック トレースが含まれます)

    • 関連するタイプがわからない場合は、Items/SelectedItem を IEnumerable/object として取得し、それらに対して gettype() を取得して表示することができます。
  • 何かを表示しようとするとき、何らかの理由でコンソールの使用から例外が発生した場合に備えて、MessageBox.Show も試してください。

  • 例外とは関係ありませんが、リストボックスの項目を操作して選択した項目を見つけているようです-それが本当なら、選択した項目を直接使用しないのはなぜですか?

于 2010-01-02T16:20:21.303 に答える
0

私は以前にも同様の問題を抱えていましたが、これも選択したアイテムに関連しています。私はそれを広範囲に調査しましたが、修正を見つけることができませんでした。私は最終的にフォームを作り直すことになり(コントロールだけが必要だったと思いますが)、それで修正されたようです。

于 2012-06-14T20:48:51.010 に答える