• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:チェックした値を取得したい(CheckedListbox)。)

CheckedListboxについての質問

このQ&Aのポイント
  • CheckedListboxコントロールを使用して、データベースからAの値を表示し、Bの値を取得する方法について教えてください。
  • ループを使用して、チェックされた項目のBの値とチェックの状態をハッシュテーブルに格納する方法についてサンプルコードをご教示ください。
  • 質問者は、CheckedListboxコントロールにデータを表示するために、DBAccessクラスのGetDataSetメソッドを使用してデータを取得しています。

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

  • ベストアンサー
回答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.windows.forms.checkedlistbox.getitemcheckstate.aspx
ginfix
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • DataTableの件数を取得したい

    DataTableの件数を取得したいのですがどのようにすれば取得できますか? Private Function getDataListCnt() As Long Dim DBConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("xxx").ConnectionString) Dim sqlCmd As New SqlCommand sqlCmd.Connection = DBConnection Dim lngRet AS Long Dim dt As DataTable = New DataTable() dt = GetList() ☆ここで取得したい☆ lngRet=??? Return lngRet End Function Private Function GetList() Dim CmdTxt As StringBuilder = New StringBuilder() CmdTxt.AppendLine(" SELECT * FROM TBL WHERE CD='001'") Dim dt = GetDBListData(CmdTxt.ToString()) Return dt End Function

  • 配列のSession格納、及び取得方法について

    お世話になります。 現在Visual Studio 2005でプログラム作成中です。 質問内容は、 配列(文字列を格納)をSessionに渡し、次ページでその配列の値を取得できるかという点です。 ***(a.aspx.vb)抜粋*** Dim a() As String Redim a(DataTable1.Rows.Count) For i As Integer 0 to DataTable1.Rows.Count - 1 a(i) = CType(DataTable1.Rows(i).Item(0)) Next Session("a.list") = a(DataTable1.Rows.Count) Session("a.count") = DataTable1.Rows.Count ***(b.aspx)抜粋*** Dim b() As String = CType(Session("a.list"), String) Dim bCount as integer = CType(Session("a.count"),Integer) Dim Name as String For i As Integer 0 To bCount Name = CType(b(i),String) Next としているのですが、取得できません。 配列に格納されたものをSessionに格納し、取得することは可能なのでしょうか。 また、その他に適切なものがあればご教授ください。 よろしくお願いいたします。

  • VB DataGridView 行削除

    Visualbasic 2010 を利用してWindowsFormアプリケーションを開発しております。 データベースはORACLE11を利用しております。 VB側よりOracleDataAdapterを利用してDatatableにORACLEのSELECT結果を格納しています。 DataGridViewには上記のDataTableをDataSourceとして割り当てております。 このDataGridViewに並び替え機能を組み込んでおります。 ※DataViewのSortを利用して並び替えを実現しております。 この後にDataGridViewの行削除を行うと以下の例外が発生します。 一意制約(XXX.PKY_テストデータ)に反しています Oracle.DataAccess.Client.OracleException これはDataTableをSortしたためOracleDataAdapterと一致しなくなったことが原因ではないかと推測しております。 DataGridViewの並び替えを行っても正常に行削除を行いDataTableにも反映する方法が分る方がいらっしゃいましたらご教授頂けないでしょうか。 VBソース抜粋 ・データ抽出 '/ SQLをOracleで実行した結果をデータアダプタに格納 Dadp5 = New OracleDataAdapter("SELECT * from テストデータ", CONFIG.Database) Dadp5.Fill(dt_test) Me.DataGridView_TEST.DataSource = dt_test ・並び替え(降順) Dim dv = New DataView(dt_test) dv.Sort = "テストコード DESC" dt_test = dv.ToTable Me.H_DataGridView_test.DataSource = dt_test ・行削除 Dim scBuilder As New OracleCommandBuilder(Dadp5) '/ データグリッドビューの編集内容をデータベースへ反映 '/ 生成されたSQLを実行する Dadp5.Update(dt_test) ※ここで例外が発生致します。 お手数おかけ致しますが宜しくお願い致します。 以上です。

  • DataGridViewから値取得

    DataGridViewにボタンと項目2つが配置されています。 DataGridView1 DataGridView1.Columns("btn").HeaderText = "ボタン" DataGridView1.Columns("item1").HeaderText = "アイテム1" DataGridView1.Columns("item2").HeaderText = "アイテム2" ボタンを押すと、押した行のレコードを取得したいです。 ボタンのところを押下すると、 イベントハンドラで何行目か分かるサンプルをネットで見つけました。 惜しいですが、やりたいのと少し違いました。 'CellContentClickイベントハンドラ Private Sub DataGridView1_CellContentClick(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick Dim dgv As DataGridView = CType(sender, DataGridView) Dim test_item1 As String Dim test_item2 As String ' "btn"列ならば、ボタンがクリックされた If dgv.Columns(e.ColumnIndex).Name = "btn" Then MessageBox.Show((e.RowIndex.ToString() + "行のボタンがクリックされました。")) End If ' ここに押された行のitem1の値をセット ' test_item1 = (A) ' ここに押された行のitem2の値をセット ' test_item2 = (B) End Sub (A)、(B)に何を記述すれば値を取得できますか?

  • .net 複数の主キーを設定する方法

    VB2005、SQLServer2005環境です。 主キーの設定方法について教えて下さい。 主キーが一つの場合下記のように記述しますが、複数ある場合はどう記述すればよろしいですか? お願いします。 strsql = "SELECT * FROM Aテーブル" Dim comm As SqlCommand = New SqlCommand(strsql, Con) Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) Dim ds As DataSet = New DataSet() dataadapter.Fill(ds, "Aテーブル") Dim dt As New DataTable dt = ds.Tables("Aテーブル") '主キーの設定 dt.PrimaryKey = New DataColumn() {dt.Columns("コード1")}

  • access 非連結のサブフォームの値を取得してテーブルへ追加したい

    いつもお世話になります。 以下のようにしたいのですがうまくいきません。 F_Mainのボタンを押す ↓ F_Sub1(F_Mainと連結していない単票形式)のTxt1の値と F_Sub2(F_Mainと連結した単票形式)のTxt2の値を テーブル1のTxt3、Txt4へ書込む F_Mainのボタンには以下を既述してます。 Dim cnADO As New ADODB.Connection Dim rsADO As New ADODB.Recordset Dim stSql As String Set cnADO = CurrentProject.Connection rsADO.CursorLocation = adUseClient stSql = "insert into テーブル1 (Txt3,Txt4) values (" & Me.F_SUB1!Txt1 & "," & Me.F_SUB2!Txt2 & ");" cnADO.Execute stSql cnADO.Close: Set cnADO = Nothing -----ここまで 以下のように連結フォームのF_SUB2のみにするとテーブル1に追加できました。 stSql = "insert into テーブル1 (Txt3,Txt4) values (" & Me.F_SUB2!Txt2 & "," & Me.F_SUB2!Txt2 & ");" 非連結フォームのTxt1の値を取得できていないのだと思いますが どのようにすればよいのかわからないのでご教示ください。

  • レコードの削除について

    VB2005、SQLServer2005環境です。 度々質問させていただきます。コード1、コード2、コード3を主キーに持つAテーブルがあります。 そのテーブルからある特定レコードを削除したいのですが、 targetRow = dt.Rows.Find(findTheseVals(2)) のところでエラーになります。 エラー内容は、インデックスを付加するキーには 3 値が必要ですが、1 値を取得しました。 いったいどういう意味なのでしょうか?FINDする時の書き方が悪いのでしょうか? ご教授お願いします。 Private Sub BTN_削除_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles BTN_削除.Click Dim strsql As String Dim findTheseVals(2) As Object '///DB接続 省略/// strsql = "SELECT * FROM Aテーブル" Dim comm As SqlCommand = New SqlCommand(strsql, Con) Try Dim dataadapter As SqlDataAdapter = New SqlDataAdapter(comm) dataadapter.MissingSchemaAction = MissingSchemaAction.AddWithKey Dim ds As DataSet = New DataSet() dataadapter.Fill(ds, "Aテーブル") Dim dt As New DataTable dt = ds.Tables("Aテーブル") Dim targetRow As DataRow targetRow = dt.NewRow() findTheseVals(0) = TXT_コード1.Text findTheseVals(1) = TXT_コード2.Text findTheseVals(2) = TXT_コード3.Text targetRow = dt.Rows.Find(findTheseVals(2)) ←ここでエラー targetRow.Delete() Dim cb As SqlCommandBuilder = New SqlCommandBuilder(dataadapter) dataadapter.Update(ds, "Aテーブル") Catch oExcept As Exception '例外が発生した時の処理 Finally '///DB切断省略/// End Try End Sub

  • Gridに日付を入れるとき

    Gridに「2006/05/10 13:00:00」と表示させたいのですが、「2006/05/10」と表示されてしまいます。 ------------------------------------------------ Dim dt As DataTable Dim dtSet As New DataSet dt = dtSet.Tables.Add("aaa") dt.Columns.Add("日付", Type.GetType("System.DateTime")) dt.Rows.Add(New Object() {"2006/05/10 14:00:00"}) DataGrid1.DataSource = dt ------------------------------------------------ ソースが間違っているのでしょうか。どなたかアドバイスをお願いします。

  • Excelのセルの値を取得

    VB2005Expressにて開発しています。 Excelのセルの値を取得するにはどうしたらいいのでしょうか。 下記でExcelは起動出来るのですが、値の取得ができません。 また、Rangeで範囲を指定して一括取得して、1データずつ配列化した 変数にセットすることは可能なのでしょうか。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlFilePath As String = "C:\excel_test.xls" Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) xlApp.Visible = True どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • 構造体 多段階配列について

    Private Structure test Dim a As Integer Dim b As String Dim c as String End Structure Dim a() As test = New test(2) {} Dim b() As test = New test(2) {} Dim c()() As test c = New test()() {a, b} Dim temp() as integer cは多段階配列で、 例えば、c(0)のメンバaのデータをすべて取り出したい 時はどうすればよろしいのでしょうか? //気持ち的にはこのようにしたいのですが、 できません。 temp = c(0).a どなたか、わかるかた、教えてください。 よろしくお願いします。