分類:[C#]
分類:[C#]
はじめまして池山と申します。 現在、検索結果をリストビューに表示する処理を作っているのですが、 リストビューの選択行について困っています。
検索→リストビュー表示→検索結果の1行を選択→別処理→再検索→表示 という流れの処理で、最初の検索後リストビューの選択行を記憶しておき、 再検索後の表示の際に記憶しておいた行数を選択する、 という処理なのですが、
int選択行 = 現在の選択行;
if (this.liv検索結果.Items.Count-1 >= int選択行) { this.liv検索結果.Items[int選択行].Selected = true; this.liv検索結果.SelectedItems[0].EnsureVisible(); this.liv検索結果.Focus(); } else { if (this.liv検索結果.Items.Count > 0) { this.liv検索結果.Items[this.liv検索結果.Items.Count-1].Selected = true; this.liv検索結果.SelectedItems[0].EnsureVisible(); this.liv検索結果.Focus(); } else {
} }
というコードでちゃんと記憶しておいた行が反転表示されています。
が、 表示後、↓キーを押下すると選択行の1つ下の行に移ると思ってたのですが 結果は2行目に選択行が移ってしまいます。 表示後のリストビューをよく見ると1行目に点線で選択されているような 状態になっており、点線行と反転行ではキー操作は点線行が優先されるようで 選択行のデータは反転行が握っている状態です。 上記処理の後には処理はなく、処理を抜ける寸前までウォッチ式では 記憶行のINDEXがしっかり変数に入っていました。
もしわかる方がおられたら教えていただきたいのですが、 点線行と反転行を一致させた上で任意の行を選択する方法がありますでしょうか? 点線行だけでも制御できれば何とかなると思っているのですが・・・。
よろしくお願いいたします。 Visual Studio 2003 C#で作っております。
|