こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

チェックした値を取得したい(CheckedListbox)。

checkedlistboxコントロールについて教えてください。

A、Bというカラムがある、testというテーブルの内容を
checkedlistboxに表示します。
この時に表示するのはA(DisplayMember)、値としてB(ValueMember)を
指定したいと思っています。

チェックされた項目については、Bの値とそれがチェックされたかという
情報を、ハッシュテーブルで返すようにしたいです。
((3,True)、(4,False)みたいに。)


とりあえず書いてみた限りでは、

Dim dt As New DataTable

Dim DBAccess As new DataBaseAccess

Dim selectSql As String
selectSql = "SELECT A,B FROM test"

'データテーブルに格納
dt = DBAccess.GetDataSet(selectSql).Tables(0)

Me.CheckListBox.DataSource = dt

Me.CheckListBox.DisplayMember = "A"



こんな感じかと思うのです。
(DataBaseAccessというのは、DB接続用に作ったクラスで、
 GetDataSetメソッドはSQLの結果をDataSetで返すものです)。


どう書いたものか悩んでいるのが、チェックされたか否かの情報と
Bの値を格納していく処理です。
ループさせて見ていくのかと思うのですが、この時にBの値を取得
していくにはどのようにすれば良いのでしょうか?

サンプルソースを交えて教えていただけると助かります。
宜しくお願いします。

投稿日時 - 2008-06-13 12:26:29

QNo.4097264

困ってます

質問者が選んだベストアンサー

お世話になります。

以下はサンプルです。
Form1 には CheckedListBox と Button が配置されています。
Public Class Form1
  Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "
#End Region

  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim DBAccess As DataBaseAccess = New DataBaseAccess
    Dim sql As String = "SELECT A, B FROM TABLE"
    Dim dt As DataTable = DBAccess.GetDataset(sql).Tables(0)

    Me.CheckedListBox1.DataSource = dt
    Me.CheckedListBox1.DisplayMember = "A"
    Me.CheckedListBox1.ValueMember = "B"
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    For index As Integer = 0 To Me.CheckedListBox1.Items.Count - 1
      System.Diagnostics.Debug.WriteLine( _
      index.ToString() & "チェック状態:" & Me.CheckedListBox1.GetItemCheckState(index).ToString())
      Dim listObject As DataRowView = DirectCast(Me.CheckedListBox1.Items(index), DataRowView)
      System.Diagnostics.Debug.WriteLine( _
      "A:" & Convert.ToString(listObject("A")) & ControlChars.NewLine & _
      "B:" & Convert.ToString(listObject("B")))
    Next
  End Sub
End Class

Button1_Click メソッド内でチェックの状態や各列の値などを取得しています。
これを応用するなりして HashTable とかを作ればよいかと思います。

参考URL:http://msdn.microsoft.com/ja-jp/library/system.windows.forms.checkedlistbox.getitemcheckstate.aspx

投稿日時 - 2008-06-13 15:17:39

お礼

お礼が遅れまして申し訳ありません。

参考にさせていただき、無事に目的の動作をするよう組む
ことが出来ました。
大変助かりました。
ありがとうございました。

投稿日時 - 2008-06-18 16:42:17

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問