
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の値を取得
していくにはどのようにすれば良いのでしょうか?
サンプルソースを交えて教えていただけると助かります。
宜しくお願いします。
No.1ベストアンサー
- 回答日時:
お世話になります。
以下はサンプルです。
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.w …
お礼が遅れまして申し訳ありません。
参考にさせていただき、無事に目的の動作をするよう組む
ことが出来ました。
大変助かりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
人気Q&Aランキング
-
4
VBAでWEB上の入力項目に値をい...
-
5
IP Address Controlから値を取...
-
6
ユーザーフォームのテキストボ...
-
7
RegisterClassExのエラー原因
-
8
代入したのに値が更新されない...
-
9
チェックした値を取得したい(C...
-
10
VBA コピーして次の値まで貼り...
-
11
マクロ 特定のセル値のみクリ...
-
12
OracleでRecordCountが正しくな...
-
13
ユーザーフォームの入力をシー...
-
14
シーケンサで最小値を保持する
-
15
コンボボックスの値がうまく取...
-
16
[VBA]選択範囲の下から上に処理...
-
17
DataGridView1のcellで計算
-
18
不定値の出力について
-
19
特定のセルが空白だったら、そ...
-
20
【Excel VBA】指定行以降をクリ...
おすすめ情報
公式facebook
公式twitter