ListViewで条件式を使う方法
Visual Basic 2010でDatasetとListviewを使ってプログラムを作成しています。
DatasetのデータをListviewに表示させるプログラムは下記のコードで完成しました。
*******************************
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With ListView1
.Columns.Add("date", 40, HorizontalAlignment.Left)
.Columns.Add("no", 40, HorizontalAlignment.Left)
.Columns.Add("住所", 100, HorizontalAlignment.Left)
showlist()
End With
End Sub
Private Sub showlist()
Try
住所TableAdapter.Fill(Kz526DataSet.住所)
Catch ex As Exception
MessageBox.Show(ex.Message, "住所テーブル")
End Try
With Kz526DataSet.住所
For i As Integer = 0 To .Rows.Count - 1
ListView1.Items.Add(.Rows(i)("date"), (i))
ListView1.Items(i).SubItems.Add(.Rows(i)("no"))
ListView1.Items(i).SubItems.Add(.Rows(i)("住所"))
Next
End With
End Sub
************************************
次に、Datasetのデータの内一部だけListviewに表示させることにしました。そのため、テキストボックスを設けて、その日付と同じデータをListviewに表示させます。
テキストボックスを設けて、ボタンをクリックしてデータをListviewに表示させようとしたコードです。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
With ListView1
.Columns.Add("date", 40, HorizontalAlignment.Left)
.Columns.Add("no", 40, HorizontalAlignment.Left)
.Columns.Add("住所", 100, HorizontalAlignment.Left)
showlist()
End With
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
住所TableAdapter.Fill(Kz526DataSet.住所)
With Kz526DataSet.住所
For c As Integer = 0 To .Rows.Count - 1
If TextBox1.Text = Kz526DataSet.住所.Rows(c)("data") Then
ListView1.Items.Add(.Rows(c)("date"), (c))
ListView1.Items(c).SubItems.Add(.Rows(c)("no"))
ListView1.Items(c).SubItems.Add(.Rows(c)("住所"))
End If
Next
End With
End Sub
***************************************
このコードでは、条件式とListViewの関係がいまくいきません。エラーメッセージは次の様に表示されます。
「'3' の InvalidArgument=Value は 'index' に対して有効ではありません。
パラメーター名: index」
いろいろ試行錯誤してみましたところ、「ListView1.Items(c).SubItems.Add(.Rows(c)("no"))」のところで止まります。
if文では、Thenのあとは1行しか書けないのでしょうか。書き方をご指導ください。
お礼
ご回答ありがとうございます。 マウス操作であれば、画像クリックすれば、その画像が選択されますので、ループして比較することもできます。 しかし画像タッチでは、それができないのです。 例えば、A画像とB画像があるとします。 マウスでB画像をクリックすれば、選択され、イベントでその画像を特定できます。 画像タッチの場合、B画像をクリックしても、選択等されず、TouchDown イベントは発生しますが、B画像を特定できる手段がないようなのです。 感覚的には、ListViewコントロールの不具合に感じますが、タッチ環境が整っていない現状では、そういう仕様なのかもしれません。 せっかく回答いただいたのに、こんな返事となってしまい、申し訳ございません。 また何かありましたら、よろしくお願いいたします。