2009-05-30 3 views
0

私は、リストボックス内のアイテムを選択すると、そのアイテムに関する情報がテキストボックスに表示されるコードを作成しました。また、リストの内容を上下に移動し、削除ボタンを押して選択した項目を削除します。ここでアイテムをクリックすると、情報がテキストボックスに表示されますが、同じアイテムの上、下、または削除のボタンをクリックすると例外がスローされます。オブジェクト参照はオブジェクトのインスタンスに設定されません。私は以下のコードでクラス名の新しいオブジェクトを作成していたときに、この例外をスローラインは次のとおりです。プロパティを表示した後、リストボックスの要素を上下に移動するにはどうすればいいですか?

private void lb_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     m_Txt.Clear(); 
     ClassName fileInfo = new ClassName(m_lbOPFfiles.SelectedItem.ToString()); 
     m_Txt.Multiline = true; 
     m_Txt.Text = fileInfo.title + Environment.NewLine + fileInfo.ID + Environment.NewLine + fileInfo.time; 

    } 

移動アップボタンのコードは次のとおりです。

private void m_btnUP_Click(object sender, EventArgs e) 
    {    
     if (m_lbOPFfiles.SelectedIndex != 0 && m_lbOPFfiles.SelectedIndex != -1) 
     { 
      // m_lbOPFfiles.SelectedItem. 
      object item = m_lbOPFfiles.SelectedItem; 
      int index = m_lbOPFfiles.SelectedIndex; 
      m_lbOPFfiles.Items.RemoveAt(index); 

      m_lbOPFfiles.Items.Insert(index - 1, item); 
     }   
    } 

教えてください、おそらく何ができますか問題とそれに対する解決策。

+0

あなたはstackoverflow.comで投票と承認された回答を持つシステムに気づいたのですか? ; o) –

答えて

0

私の推測はlb_SelectedIndexChangedメソッドの3行目です。 ToString()SelectedItemです。この時点ではnullになる可能性があります。m_btnUP_Clickメソッドの7行目のアイテムを削除した後はおそらくnullになります。これにより例外がスローされます。

例外の詳細でどのコード行がスローされたのかを確認し、このようなエラーをピンで指摘できます。また、コードを行ごとにデバッグして自分自身で確認することもできます。

これが役に立ちます。

0

私の推測では、あなたのItems.RemoveAt呼び出しは、選択をクリアSelectedItemnullになることを引き起こし、そしてこのnullはあなたが記述問題の原因発射するlb_SelectedIndexChangedイベント、されていることだろう。

実際に何かが選択されたことをイベントハンドラで確認することをお勧めします。

1

SelectedIndexChangedは、項目が選択されているときだけでなく、項目が「選択されていない」ときに発生します(現在選択されている項目がリストから削除された場合に発生します)。項目がSelectedIndexを-1である、とのSelectedItemがnullで選択されていない場合

if (m_lbOPFfiles.SelectedIndex >= 0) // you can also use m_lbOPFfiles.SelectedItem != null 
{ 
    m_Txt.Clear(); 
    ClassName fileInfo = new ClassName(m_lbOPFfiles.SelectedItem.ToString()); 
    m_Txt.Multiline = true; 
    m_Txt.Text = fileInfo.title + Environment.NewLine + fileInfo.ID + Environment.NewLine + fileInfo.time; 
} 

:項目選択があることを確認するためのチェックを追加します。

+0

ありがとうございました!!! –

関連する問題