C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: VB.NET コンボボックスについて


(過去ログ 99 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■59053 / inTopicNo.1)  VB.NET コンボボックスについて
  
□投稿者/ ユルン (1回)-(2011/05/10(Tue) 17:43:57)

分類:[.NET 全般] 

データベースからテーブルを読み込んで、コンボボックスにデータをセットする関数を作っています。
関数自体は動くのですが、
DisplayMemberやValueMember、SelectedValue、SelectedText、SelectedIndex等の違いがいまいち分かりません。
以下のコードを例に解説していただけないでしょうか?
コンボボックスにはaaaa~ddddまでをセットする予定です。

Private Sub SetComboItem()

Dim sbSql As New System.Text.StringBuilder
Dim adapter As New SqlClient.SqlDataAdapter
Dim command As SqlClient.SqlCommand
Dim table As New DataTable

' 抽出コマンド作成
command = cn.CreateCommand
sbSql.Append("SELECT *")
sbSql.Append(" FROM TABLE")
command.CommandText = sbSql.ToString

Try
' アダプタにコマンド設定
adapter.SelectCommand = command

' データ抽出 / 結果をDataTableに格納
adapter.Fill(table)

Combo_Name.DataSource = table
Combo_Name.ValueMember = Field
Combo_Name.DisplayMember = Field_Name

Finally
' アダプタ / コマンド / データテーブルを破棄
command.Dispose()
adapter.Dispose()

End Try

End Sub


TABLE
Field Field_Name
1 aaaa
2 bbbb
3 cccc
4 dddd

引用返信 編集キー/
■59055 / inTopicNo.2)  Re[1]: VB.NET コンボボックスについて
□投稿者/ shu (681回)-(2011/05/10(Tue) 17:55:37)
No59053 (ユルン さん) に返信
> DisplayMemberやValueMember、SelectedValue、SelectedText、SelectedIndex等の違いがいまいち分かりません。
DisplayMember:コンボボックスに表示される項目が何かを指定する
ValueMember:SelectedValueしたときに参照する項目
SelectedText:コンボボックスに関係なくテキストボックスないで選択している文字列(反転)
SelectedIndex:コンボボックスで選択されている場所先頭を0とした順番で数える
引用返信 編集キー/
■59057 / inTopicNo.3)  Re[2]: VB.NET コンボボックスについて
□投稿者/ ユルン (2回)-(2011/05/10(Tue) 18:18:33)
ありがとうございます。
大変参考になりました。
自分でコードを触りながら少し分かった気がします。
SelectedValueとSelectedTextの最後の反転というのは
どういった事なのでしょうか。
引用返信 編集キー/
■59060 / inTopicNo.4)  Re[3]: VB.NET コンボボックスについて
□投稿者/ 魔界の仮面弁士 (2168回)-(2011/05/10(Tue) 20:45:10)
No59057 (ユルン さん) に返信
> SelectedTextの最後の反転というのは
このプロパティは、DropDownStyle が DropDownList の場合は使用されません。
DropDownStyle が DropDown の時に意味を持ってきます。

身近な所では、IE のアドレスバーが DropDown 形式の ComboBox になっています。
アドレスバーからは、ドロップダウンして過去の履歴を見ることもできますし、
TextBox のように URL を直接入力する事もできますよね。

そして、その TextBox 部の文字列をドラッグして反転させた時に、
反転選択されている文字列を調べるのが SelectedText です。
(SelectedText プロパティは、値の取得だけでなく代入操作も可能です)


> SelectedValueと
たとえば金融機関コードの場合、
 0001 → みずほ銀行
 0123 → 岩手銀行
 3210 → あさひかわ農業協同組合
のように、データを表す値が割り振られていますが、このような
「識別値」と「表示させるデータ」の組み合わせに対して使われます。


'--------------------------
' ComboBox と Label を 3 つずつ、それと Timer を貼っておいてください。
Public Class Form1

    Private tbl1, tbl2 As DataTable

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
        tbl1 = New DataTable()
        tbl1.Columns.Add("CODE")
        tbl1.Columns.Add("NAME")
        tbl1.Rows.Add("0001", "みずほ銀行")
        tbl1.Rows.Add("0123", "岩手銀行")
        tbl1.Rows.Add("3210", "あさひかわ農業協同組合")

        tbl2 = tbl1.Copy()

        'ドロップダウン コンボにバインド
        ComboBox1.DropDownStyle = ComboBoxStyle.DropDown
        ComboBox1.DataSource = tbl1
        ComboBox1.ValueMember = "CODE"
        ComboBox1.DisplayMember = "NAME"

        'ドロップダウン リストにバインド
        ComboBox2.DropDownStyle = ComboBoxStyle.DropDownList
        ComboBox2.DataSource = tbl2
        ComboBox2.ValueMember = "CODE"
        ComboBox2.DisplayMember = "NAME"

        'ドロップダウン コンボ(非連結)
        ComboBox3.DropDownStyle = ComboBoxStyle.DropDown
        ComboBox3.Items.Add("みずほ銀行")
        ComboBox3.Items.Add("岩手銀行")
        ComboBox3.Items.Add("あさひかわ農業協同組合")

        Timer1.Interval = 100
        Timer1.Start()
    End Sub

    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timer1.Tick
        Label1.Text = "SelectedIndex=" & CStr(ComboBox1.SelectedIndex) & vbNewLine _
                    & "SelectedValue=" & CStr(ComboBox1.SelectedValue) & vbNewLine _
                    & "SelectedText=" & ComboBox1.SelectedText & vbNewLine _
                    & "SelectedItem=" & TypeName(ComboBox1.SelectedItem)

        Label2.Text = "SelectedIndex=" & CStr(ComboBox2.SelectedIndex) & vbNewLine _
                    & "SelectedValue=" & CStr(ComboBox2.SelectedValue) & vbNewLine _
                    & "SelectedText=" & ComboBox2.SelectedText & vbNewLine _
                    & "SelectedItem=" & TypeName(ComboBox2.SelectedItem)

        Label3.Text = "SelectedIndex=" & CStr(ComboBox3.SelectedIndex) & vbNewLine _
                    & "SelectedValue=" & CStr(ComboBox3.SelectedValue) & vbNewLine _
                    & "SelectedText=" & ComboBox3.SelectedText & vbNewLine _
                    & "SelectedItem=" & TypeName(ComboBox3.SelectedItem)
    End Sub
End Class

引用返信 編集キー/
■59070 / inTopicNo.5)  Re[4]: VB.NET コンボボックスについて
□投稿者/ ユルン (3回)-(2011/05/11(Wed) 10:01:13)
2011/05/11(Wed) 10:01:37 編集(投稿者)
2011/05/11(Wed) 10:01:35 編集(投稿者)

丁寧な説明ありがとうございます。
おかげで理解が深まりました。
本当にどうもありがとうございました!
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -