
vb .net Winアプリでコンボボックスに値をセットする方法を教えて下さい。
table1
都道府県コード,都道府県名(カナ),都道府県名
01,ホッカイドウ,北海道
02,アオモリケン,青森県
03,イワテケン,岩手県
のテーブルがあり、既に読み込んでいます。
このデータをコンボボックスにセットしたいです。
Dim NpgsqlConnection1 As NpgsqlConnection
Dim NpgsqlCommand1 As NpgsqlCommand
Dim NpgsqlDataAdapter1 As NpgsqlDataAdapter
Dim String1 As String
Dim DataTable1 As DataTable
NpgsqlConnection1 = New Npgsql.NpgsqlConnection
NpgsqlConnection1.ConnectionString = gstrCnct
NpgsqlConnection1.Open()
String1 = "select * from table1;"
NpgsqlCommand1 = New NpgsqlCommand
NpgsqlCommand1.Connection = NpgsqlConnection1
NpgsqlCommand1.CommandText = String1
NpgsqlDataAdapter1 = New NpgsqlDataAdapter(String1, NpgsqlConnection1)
DataTable1 = New System.Data.DataTable
NpgsqlDataAdapter1.Fill(DataTable1)
' 一括の方法でもOK
' Me.ComboBox1.??? = ????
' ぐるぐるしながらセットでもOK
' Me.ComboBox1.??? = Space(0)
' Me.ComboBox1.??? = "ミセンタク"
' Me.ComboBox1.??? = "未選択"
For Each DataRow1 As DataRow In DataTable1.Rows
' Me.ComboBox1.??? = DataRow1("都道府県コード")
' Me.ComboBox1.??? = DataRow1("都道府県名(カナ)")
' Me.ComboBox1.??? = DataRow1("都道府県名")
Next DataRow1
■要件
メインの情報は都道府県名ですが、
めくった時に
都道府県コード,都道府県名(カナ),都道府県名
を見せる形で作りたいです。
都道府県コードは取り出す必要があります。
データ
1行目は空白,ミセンタク,未選択
2行目以降はtable1から取り出した値。
以上、よろしくお願いします。
No.3ベストアンサー
- 回答日時:
表示項目(Text)とリスト項目(DisplayMember)を異なる設定には出来ないみたいです
そこで解決案として ComboBoxを継承したクラスを生成して
この中に 選択用と表示用の2つのConnboBoxを作って制御するといった具合になろうかと思います
' 選択用に cbSelectなどを Private WithEvents で宣言
private withEvents cbSelect as ComboBox
Sub Newを追加して
cbSelect = new ComboBox
' 表示用のドロップダウンの高さを1に設定して 見かけ上非表示にする
Me.DropDownHeight = 1
' 選択用を非表示にする
cbSelect.Visible =False
' 継承クラスのKeyDownイベントにて
if e.Alt AndAlso e.KeyCode = keys.Down then
' 処理済にするため
e.Handled = true
' 選択用を表示して ドロップダウンリストを表示する
cbSelect.Show
cbSelect.DropDown = true
' 自分を非表示に
me.hide
end if
cbSelectのDropDownClosedイベントにて
cbSelect.Hide
me.Show
me.Focus
' WINAPIの宣言を追加
<StructLayout(LayoutKind.Sequential)> _
Structure tCOMBOBOXINFO
Dim cbSize As Integer
Dim rcItem As Rectangle
Dim rcButton As Rectangle
Dim stateButton As Integer
Dim hwndCombo, hwndItem, hwndList As IntPtr
End Structure
Declare Ansi Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As IntPtr, ByVal umsg As UInt32, ByVal wParam As Integer, ByRef lParam As tCOMBOBOXINFO) As Integer
Const COMBOBOXINFO As UInt32 = &H164
Const STATE_SYSTEM_PRESSED As UInt32 = 8
Const STATE_SYSTEM_INVISIBLE As UInt32 = &H8000
Dim cbInfo As tCOMBOBOXINFO
' 継承コントロールのMouseDownイベントで
if e.Button = e.Button = Windows.Forms.MouseButtons.Left Then
Dim cb As tCOMBOBOXINFO
cb.cbSize = 52
If SendMessage(Me.Handle, COMBOBOXINFO, 0, cb) > 0 Then
If cb.stateButton = STATE_SYSTEM_PRESSED Then
cbSelect.Show()
cbSelect.DroppedDown = True
Me.Hide()
End If
End If
end if
' 継承コントロールのParentChangedイベントで
cbSelect.Parent = me.Parent
' 選択用のDisplayMemberプロパティの公開
public Property DisplayMember2 as String
get
return cbSelect.DisplayMember
End get
set(value as string)
cbSelect.DisplayMember = value
End Set
End Property
' 選択用のDorpDownHeightプロパティの公開
Public Property DropDownHeight2() As Integer
Get
Return cbSelect.DropDownHeight
End Get
Set(ByVal value As Integer)
cbSelect.DropDownHeight = value
End Set
End Property
' Size Width Location DataSourceのShadow化
Public shadows Property Size as Size
get
retur myBase.Size
End Get
Set(value as Size)
cbSelect.size = value
myBase.size = value
End Set
End Property
' 同様に Width Location DataSource を作成
といった具合で 出来るかと …
選択しているときの コンボボックスの表示が コード、読み、都道府県名 になってしまう点が ご希望に添えてないと思います
No.2
- 回答日時:
一時的なDataTableを構築して これをDataSouseやDisplayMember,ValueMemberに設定してみてはいかがでしょう
' 列情報などを複製する
dim dt as DataTable = DataTable1.Clone
' 表示列以外のデータの取得用
dt.Columns.add("ValueMember")
' 未選択の行を追加
dim row as DataRow = dt.NewRow
row("都道府県コード") = space(0)
row("都道府県名(カナ)") = "ミセンタク"
row("都道府県名") = "未選択"
dt.rows.add(row)
' 都道府県のデータを追加
dim rd as DataTableReader = DataTable1.CreateDataReader
dt.Load(rd)
' ValueMember列の生成
for each row in dt.rows
row("valueMember") = row(0) & "," & row(1)
next
' ComboBoxへのヒモ付け
ComboBOx1.DataSource = dt
ComboBox1.DisplayMember = dt.Ccolumns(2).ColumnName ' 都道府県名
ComboBox1.ValueMember = dt.Columns(3).ColumnName ' 都道府県コード,都道府県名(カナ)
といった具合で …
取り出しの際は
ComboBox1.Textで 都道府県名
ComboBox1.SelectedValue で 都道府県コード,都道府県名(カナ)
を取得できますよ
有難う御座います。
半分ぐらいやりたい事は出来ました。
後は、「複数項目を見せる」だけなのですが、
DisplayMember には1つしかセットできないし、
ValueMember は内部の値で表に出せないですよね。
ComboBoxでは無理なのでしょうか?
無理だとしたら、何のコントロールならできるのでしょうか?
コードと名称を同時に見せて、コンボボックス状に表現しているアプリを見かける事がありますが、VBでは無理なのでしょうか?
No.1
- 回答日時:
DataSourceプロパティに対象のDataTableを突っ込んで,
ref) http://msdn.microsoft.com/ja-jp/library/vstudio/ …
DisplayMemberプロパティに表示したいDataColumnのColumnNameを設定すればよいかと。
ref) http://msdn.microsoft.com/ja-jp/library/vstudio/ …
追加資料:Visual Studio でのデータへの Windows フォーム コントロールのバインド
http://msdn.microsoft.com/ja-jp/library/vstudio/ …
有難う御座います。
単純なケースでは成功しているのですが、
・DataTableの情報以外に1レコードだけコンスタント値でつっこむ
・複数の項目をプルダウンで見せる
この2点が分かりません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 転記について 2 2023/02/28 08:34
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- MySQL select *, `人口(男)`AND`人口(女)`/'面積' as '人口密度'FROM … 1 2023/07/03 21:05
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 神奈川県の市区町村の一覧。ただ 3 2023/05/01 18:01
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- その他(IT・Webサービス) 僕みたいな一般人の素人がインターネットで各都道府県民100人、合計4700人にアンケートを取るのって 3 2023/08/24 16:42
- その他(行政) 都道府県市区町村民に手厚い行政を行なっている都道府県市区町村は、どこの都道府県市区町村ですか。 具体 1 2023/07/02 10:12
- 政治 道州制について。 「道州制」と一口にいっても様々あり、都道府県を残すか廃止するか、立法権も与えるか否 1 2022/11/17 19:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル入力規制リスト行数
-
エクセルの画像にツールチップ...
-
条件付き書式を設定しても、テ...
-
C# アプリ終了時に設定を記憶...
-
Enabled=Falseのテキストボック...
-
ADOのCursorLocationプロパティ
-
ACCESS2010 ActiveXコントロー...
-
DataGridViewで行の展開みたい...
-
テキストボックス(VBA)でEnter...
-
VB.NET ToolTipの表示条件について
-
ラベルの表示
-
PictureBoxの背景色変更(VB.NET)
-
VBからエクセルのテキストボ...
-
デザインモードを解除すると消...
-
VC++でエクセルのような表
-
C# のテキストボックスデザイン...
-
VC++のコンボボックスの各項目...
-
エクセルでリストの表示を増や...
-
VB6.0で折れ線グラフ作れますか?
-
ユーザーフォームに日付を表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームに日付を表示...
-
テキストボックス(VBA)でEnter...
-
エクセルの画像にツールチップ...
-
Wordテキストコントロールが未...
-
コンボボックスの高さを変更し...
-
Enabled=Falseのテキストボック...
-
ADOのCursorLocationプロパティ
-
MSFlexGrid
-
checkbox付きListViewで デフ...
-
VBからエクセルのテキストボ...
-
PictureBoxの背景色変更(VB.NET)
-
VB.NETで縦書表示をしたいので...
-
デザインモードを解除すると消...
-
エクセル入力規制リスト行数
-
C# アプリ終了時に設定を記憶...
-
DataGridViewで行の展開みたい...
-
VB6でLabelの最前面にText Box...
-
VB.NET ToolTipの表示条件について
-
C# TEXTが空白であるLABELは何...
-
チェックボックスの文字色の変え方
おすすめ情報