- PR -

[C#] ListViewのインデックス取得について

1
投稿者投稿内容
Syou
会議室デビュー日: 2006/02/03
投稿数: 13
投稿日時: 2006-03-05 10:41
 ListViewの選択された位置を取得しようと以下のようにlistView1のSelectedIndexのイベントで取得するようにしました。
コード:
ListView.SelectedIndexCollection indexes = this.listView1.SelectedIndices;

int get_index = 0;

foreach (int index in indexes)
 {
  get_index = this.listView1.Items[index].Index;
 }


 これだと1度目はIndex値を取得し正常に動作しますが2度目はforeachが機能しないのか0のままスルーされてしまうようです。
 どうしてなのか、ヒントだけでもお願いします。
何度も初心者的な質問ですいません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-05 11:08
引用:

Syouさんの書き込み (2006-03-05 10:41) より:

これだと1度目はIndex値を取得し正常に動作しますが2度目はforeachが機能しないのか0のままスルーされてしまうようです。


「しないのか」と言うより、indexes(?) という変数の中身の問題でしょう。
憶測で質問するよりは、ブレークポイントを置いて実際に検証してみると良いです。
この行為を「デバッグ」と言います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Syou
会議室デビュー日: 2006/02/03
投稿数: 13
投稿日時: 2006-03-05 20:52
 じゃんぬさんの言われたとおりにデバッグをしてみました。
すると、

1回目ListView選択時では
System.Windows.Forms.ListView.SelectedIndexCollectionのindexesのIndicesArrayは[0]で数字を返していました。
foreach内でも値は取得され、そのまま通しても例外処理は発生しませんでした。

ところが、2回目ListView選択時では
System.Windows.Forms.ListView.SelectedIndexCollectionのindexesのIndicesArrayは[0]で数字を返していません。
そのため、
foreach (int index in indexes)
 {
  get_index += this.listView1.Items[index].Index;
 }
内はindexesのIndicesArrayで数字が返されていないためスルーされていました。
System.Windows.Forms.ListView.SelectedIndexCollectionで1回目は選択時の数字を返し、2回目選択時には返していません。
1回目は返すが2回目は返さない、ということはありえるんでしょうか。
よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-03-08 22:13
引用:

Syouさんの書き込み (2006-03-05 20:52) より:

ところが、2回目ListView選択時では
System.Windows.Forms.ListView.SelectedIndexCollectionのindexesのIndicesArrayは[0]で数字を返していません。


数字を返さないで、どうなっているの?
1

スキルアップ/キャリアアップ(JOB@IT)