開発環境:
win xp sp2
Microsoft Visual Studio 2005
C# windowsアプリケーション
listViewにプロパティからColumnsを4つ追加しました。
追加したカラムにボタンが押されたら文字列を代入としています。
private void btn_Click()
{
ListViewItem LI = new ListViewItem();
LI = listView1.Items.Add(A+i);
LI.SubItems.Add(B+i);
LI.SubItems.Add(C+i);
LI.SubItems.Add(D+i);
i++;
}
listView1に表示された文字を選択した時に
何番が選択されたかを取得する為に下記のようにして
取得しているのですが
int idx = listView1.SelectedItems[0].Index;
2回目にカラムを選択すると下記のエラーが出て
強制終了してしまいます。
//***********************************************************
System.ArgumentOutOfRangeException' のハンドルされていない例外が
System.Windows.Forms.dll で発生しました。
追加情報: '0' の InvalidArgument=Value は 'index' に対して有効ではありません。
//***********************************************************
なぜエラーが出てしまうのか判りません。
Indexの取得方法が違うのでしょうか?
知っている方いましたら
ご教授お願い致します。
> int idx = listView1.SelectedItems[0].Index;
のように0固定で使う前に、ちゃんと選択されているアイテムが1つ以上あるか
確認してみてはどうでしょうか?
ind idx;
if (listView1.SelectedImtes.Count > 0)
{
idx = listView1.SelectedItems[0].Index;
}
Blueさんの仰ったとおりに実装したところ
エラーが起きなくなりました。
ありがとうございました。