tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルコンボボックスのドロップダウンについて
記事No8440
投稿日: 2008/11/29(Sat) 16:39
投稿者sio
お世話になります。

コンボボックスのドロップダウンで以下のようなことをしたいと考えています。
画面ロード時の値は空白にし、かつドロップダウンで空白が最後に
ある状態を作りたいのですが、このようにするとドロップダウン時に
空白が選択されてしまいます。
これをvalue1が選択される状態に出来ないでしょうか。

ドロップダウンリスト
value1
value2
.
.
value14
value15
空白

現在ドロップダウン時に表示される形
value13
value14
value15
空白  ←反転状態

ドロップダウン時に表示される形の理想
value1 ←反転状態
value2
value3
value4

ちょっと意味不明な質問かもしれませんが
御理解頂けると助かります。
よろしくお願いします。

[ツリー表示へ]
タイトルRe: コンボボックスのドロップダウンについて
記事No8441
投稿日: 2008/11/29(Sat) 17:05
投稿者魔界の仮面弁士
Imports KeyValue = System.Collections.Generic.KeyValuePair(Of String, String)
Public Class Form1

    Private list As New List(Of KeyValue)()

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        list.Add(New KeyValue("001", "value1"))
        list.Add(New KeyValue("002", "value2"))
        list.Add(New KeyValue("003", "value3"))
        list.Add(New KeyValue("004", "value4"))
        list.Add(New KeyValue("005", "value5"))
        list.Add(New KeyValue("006", "value6"))
        list.Add(New KeyValue("007", "value7"))
        list.Add(New KeyValue("", Nothing))

        'こうすると、空白を選択させた状態にすることすらできないはず。
        ComboBox1.DropDownStyle = ComboBoxStyle.DropDown
        ComboBox1.DataSource = list.ToArray()
        ComboBox1.DisplayMember = "Value"
        ComboBox1.ValueMember = "Key"
        ComboBox1.Text = ""

        'sio さんの「空白が選択されてしまう」状態はこれかな?
        ComboBox2.DropDownStyle = ComboBoxStyle.DropDownList
        ComboBox2.DataSource = list.ToArray()
        ComboBox2.DisplayMember = "Value"
        ComboBox2.ValueMember = "Key"
        ComboBox2.SelectedValue = ""

        'で、こういう状態になればよいのかな?
        ComboBox3.DropDownStyle = ComboBoxStyle.DropDownList
        ComboBox3.DataSource = list.ToArray()
        ComboBox3.DisplayMember = "Value"
        ComboBox3.ValueMember = "Key"
        ComboBox3.SelectedIndex = -1
    End Sub

    Private Sub UpdateLabel(ByVal sender As Object, ByVal e As EventArgs) Handles _
        ComboBox1.SelectedIndexChanged, ComboBox2.SelectedIndexChanged, ComboBox3.SelectedIndexChanged, _
        ComboBox1.GotFocus, ComboBox2.GotFocus, ComboBox3.GotFocus

        Dim combo As ComboBox = DirectCast(sender, ComboBox)

        Label1.Text = String.Format("Name={0},Index={1},Value={2},Text={3}".Replace(",", vbNewLine), _
            combo.Name, combo.SelectedIndex, combo.SelectedValue, combo.SelectedText)
    End Sub
End Class

[ツリー表示へ]
タイトルRe^2: コンボボックスのドロップダウンについて
記事No8442
投稿日: 2008/11/29(Sat) 18:11
投稿者sio
早速の御回答ありがとうございます。
そうです!正にこれです!

多少不明な点もありますが、
出来ることがわかれば後は自分で細かく調べれば
なんとかなると思います。

本当にありがとうございます。
助かりました!

[ツリー表示へ]
タイトルRe^3: コンボボックスのドロップダウンについて
記事No8443
投稿日: 2008/11/30(Sun) 14:03
投稿者魔界の仮面弁士
> 多少不明な点もありますが、
この場合は、「SelectedIndex = -1」という部分が“要”となります。

先のコードでは、データバインドを使っていますが、
.Items.Add で登録したデータの場合も同様です。


なお、今回の件とは関係ありませんが、データバインドを使う場合は、
 ComboBox1.DataSource = list.ToArray()
 ComboBox2.DataSource = list.ToArray()
 ComboBox3.DataSource = list.ToArray()
の部分を
 ComboBox1.DataSource = list
 ComboBox2.DataSource = list
 ComboBox3.DataSource = list
にしてしまうと、異なる動作になってしまうので注意してください。

[ツリー表示へ]