ListViewにおいて、選択されたインデックスを取得したいと思っています。
簡単に言ってしまえば、ListBoxクラスでの SelectedIndex に相当するものが欲しいので
す。
ListView.SelectedIndicesプロパティを用いて色々と試みましたが、満足した結果は得ら
れませんでした。
よい方法がありましたら、教えていただけないでしょうか
> 満足した結果は得られませんでした。
どのような結果を求めて,どのような結果が得られたのでしょうか。
SelectedIndicesでちゃんと得られますが。
ListView.MultiSelect = false; ?
YuOさま、名無しさま ありがとうございます。
:YuOさま
> どのような結果を求めて,どのような結果が得られたのでしょうか。
int型でインデックスを得たいを思っています。
Visual Stadio のヘルプでは、
「ListBox」public virtual int SelectedIndex {get; set;}
に対して、
「ListView」public ListView.SelectedIndexCollection SelectedIndices {get;}
となっていて、int型ではありません。
また、ヘルプをListView.SelectedIndexCollectionをキーワードに追って行くと、
新たに、ContainsメソッドやIndexOfメソッドのキーワードが見つかりますが、
これらの引数には、int型のselectedIndexが必要であると書いてあります。
ListViewで選択されたインデックスを取得したいのに、selectedIndexが引数として必
要??という様な感じで混乱しています。
現在、ListView.View = Details のもので、
Column1 | Column2
A1 B1
C1 D1
上記の状態のListViewに対して、
A1を選択した状態で、
ListView.SelectedIndices.IndexOf( 0 );
を実行した場合、(IndexOfの引数は理解も根拠もなく入れてみた値です。)
結果は0でした。同様に、
ListView.SelectedIndices.IndexOf( 1 ); <=結果は-1でした。
ListView.SelectedIndices.IndexOf( 2 ); <=結果は-1でした。
次にC1を選択した状態では、
ListView.SelectedIndices.IndexOf( 0 ); <=結果は0でした。
ListView.SelectedIndices.IndexOf( 1 ); <=結果は-1でした。
ListView.SelectedIndices.IndexOf( 2 ); <=結果は-1でした。
ListView.SelectedIndices.Item.IndexOf( 0 );
とやるとItemメンバは存在ないとコンパイラに怒られてしまいます。
:名無しさま
> ListView.MultiSelect = false; ?
はい、falseにしてあります。
そもそも私がListViewに対しての理解が浅いので、根本的にやっている事が違うのでしょ
うか?
申し訳ありませんが、これらの事をもう少し教えていただけないでしょうか。
ListViewItem.Indexで似たような値が取れるのではないかな?
ListBox.SelectedIndexCollection.Itemを使えば,添え字によるアクセスができます。
http://www.microsoft.com/japan/msdn/library/ja/cpref/html/
frlrfsystemwindowsformslistboxselectedindexcollectionclassitemtopic.asp
tyさんが[2005/06/08(水) 00:04:11]に書かれた例だと,
A1を選択した状態 : ListView.SelectedIndices[0]に0が得られます。
C1を選択した状態 : ListView.SelectedIndices[0]に1が得られます。
名無しさま、YuOさま
ありがとうございます。
名無しさまの方法で、
int idx = ListView.SelectedItems[0].Index;
とする事で期待のものが取得できました。
Youさまの方法そのままで期待のものが取得できました。
お二人とも本当にありがとうございました。
また、何がありましたらお願いいたします。