プロが教える店舗&オフィスのセキュリティ対策術

VB2005の初心者です。
タイトル通り、ListViewから選択中の文字列によって処理を変えるプログラムを構築しようとしているのですが、うまくいきません。

ComboBoxの場合では
Private Sub button1_Click~
If ComboBox1.SelectedItem = "テスト" Then
処理
End if

でうまくいったのですが、ListViewの場合では
Private Sub button1_Click~
If ListView1.SelectedItems = "テスト" Then
処理
End if

と指定すると
「エラー1これらの引数で呼び出される、アクセス可能な '=' がないため、オーバーロードの解決に失敗しました」
とエラーがでます。


ListViewから選択中の文字列を取得するには「.SelectedItems」では取得できないのでしょうか?
VBに詳しい方ご教授お願いします。

※添付画像が削除されました。

A 回答 (1件)

ComboBoxはSelectedItemと単数形ですよね


ListViewの場合SelectedItemsですから選択された複数の項目といったことになります

SelectedItemsはコレクションになるので 最初の選択項目なら
ListView1.SelectedItems(0)となりますので

if ListView1.SelectedItems(0).Text = "テスト" Then
といった具合に使います

もっとも選択アイテムない場合も考えられるので上記の前に
If ListView1.SelectedItems.Count = 0 then
  Exit Sub
End if
を追加したほうがいいかもしれません

この回答への補足

ご返答ありがとうございます。

if ListView1.SelectedItems(0).Text = "テスト" Then
処理
End if

上記のように、最初に選択した"テスト"の項目は上手く動作したのですが
それ以降、他の項目を選択したり、同じ項目を2度クリックすると例外エラーが発生します。
「'0' の InvalidArgument=Value は 'index' に対して有効ではありません。パラメータ名: index」

因みに、選択する項目は一つのみとするので「MultiSelect」は無効にしています。
これらの対処方法も教えていただけると幸いです。

補足日時:2009/03/19 13:18
    • good
    • 1
この回答へのお礼

解決しました。

For Each l_text As ListViewItem In ListView1.SelectedItems
Dim subItem0 As String = l_text.SubItems(0).Text

If l_text.SubItems(0).Text = "テスト1" Then
処理
End If

If l_text.SubItems(0).Text = "テスト2" Then
処理
End If

とSubItems(0)すればうまくいきました。

お礼日時:2009/03/24 14:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A