tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルコンボボックスのAutoCompleteMode
記事No6302
投稿日: 2007/09/13(Thu) 18:44
投稿者叶雪貴
こんにちは叶と申します。

コンボボックスのAutoCompleteModeについて質問です。
AutoCompleteMode.SuggestAppend等のNone以外設定し、
コンボボックスを選択し、その後ロストフォーカスをすると
コンボボックスのselectIndexが変更されてしまいます。

同内容が設定されているとどうしても上位の同内容のIndexに自動で
変更されてしまうようです。

ひとつのコンボボックスの中身に3000件以上設定したいのでどうしても
AutoCompleteModeを使用したいのです…。

なにか代替案などありましたら教えてください。よろしくお願いします。

☆オペレーション
 4番目の山田太郎さんを選択する⇒選択時はSelectIndexは3
 コンボボックスからロストフォーカス⇒選択時はSelectIndexは0
となります。

☆環境:VisualStadio 2005
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Public Class Form1

    Private Sub ComboBox1_SelectedIndexChanged_
                (ByVal sender As System.Object, ByVal e As System.EventArgs) _
                                                                        Handles ComboBox1.SelectedIndexChanged
        Dim strWork As String
        Dim lngIndex As Long

        With Me
            strWork = .ComboBox1.Text
            lngIndex = .ComboBox1.SelectedIndex
        End With

    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object,_
                                        ByVal e As System.EventArgs) Handles MyBase.Load
        With Me
            With .ComboBox1
                .DropDownStyle = ComboBoxStyle.DropDown
                .AutoCompleteMode = AutoCompleteMode.SuggestAppend
                .AutoCompleteSource = AutoCompleteSource.ListItems

                .Items.Add("山田 太郎")
                .Items.Add("山田 はなこ")
                .Items.Add("山田 次郎")
                .Items.Add("山田 太郎")            ''同姓同名
            End With
        End With
    End Sub
End Class
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

[ツリー表示へ]
タイトルRe: コンボボックスのAutoCompleteMode
記事No6304
投稿日: 2007/09/13(Thu) 20:15
投稿者魔界の仮面弁士
行継続記号は、『_』ではなく『 _』ですよ。(空白が必要)
それと、With ブロックの使い方が不自然かも。

> 同内容が設定されているとどうしても上位の同内容のIndexに自動で
> 変更されてしまうようです。
あれ? それって ComboBoxStyle.DropDown の仕様であって、
AutoCompleteMode の設定とは、直接関係は無いのではありませんか?


テキストの内容は、(FindStringExact ではなく)FindString の仕様で検索されるので、
同姓同名でなくとも、たとえばコンボボックスの内容が
  山田 はなこ
  山田 はな
の時に「山田 はな」を選んだ場合でも、ドロップダウンしなおすと
「山田 はなこ」が選択されるような仕様であったと思います。
(それゆえ、通常はアイテムをソートした状態で、重複なく登録するのが一般的です)


> ひとつのコンボボックスの中身に3000件以上設定したいのでどうしても
そのままの画面仕様だと破綻しませんか?
利用者にとっては、「1300番目の山田 太郎」と「1700番目の山田 太郎」を
見分けることは困難ですよね。何らかの画面設計の見直しが必要な気がします。


で。
そもそも、SelectedIndex でデータを判定する仕様ならば、DropDownList にすべきかと。

DropDown は、たとえば IE のアドレスバーのような目的に使われるコントロールであり、
(一覧の内容ではなく)テキスト入力部の内容が重要視される場合にこそ有効だと思います。


> なにか代替案などありましたら教えてください。
DropDownList と TextBox を組み合わせる、とか。

[ツリー表示へ]
タイトルRe^2: コンボボックスのAutoCompleteMode
記事No6306
投稿日: 2007/09/14(Fri) 11:09
投稿者叶雪貴
魔界の仮面弁士さんへ

> テキストの内容は、(FindStringExact ではなく)FindString の仕様で検索されるので、
> 同姓同名でなくとも、たとえばコンボボックスの内容が
>   山田 はなこ
>   山田 はな
> の時に「山田 はな」を選んだ場合でも、ドロップダウンしなおすと
> 「山田 はなこ」が選択されるような仕様であったと思います。
> (それゆえ、通常はアイテムをソートした状態で、重複なく登録するのが一般的です)

なるほど…。もともとがそういった仕様なのであればしかたないですね…。

> > ひとつのコンボボックスの中身に3000件以上設定したいのでどうしても
> そのままの画面仕様だと破綻しませんか?
> 利用者にとっては、「1300番目の山田 太郎」と「1700番目の山田 太郎」を
> 見分けることは困難ですよね。何らかの画面設計の見直しが必要な気がします。

実際にはselectIndexChangeでコンボボックスの内容にセットしたValueを(社員番号)を
取得して詳細情報を画面にいちいちセットするという処理を記述してあるので
問題はないと思います。(部署なども表示するようにしてます)

> で。
> そもそも、SelectedIndex でデータを判定する仕様ならば、DropDownList にすべきかと。
>
> DropDown は、たとえば IE のアドレスバーのような目的に使われるコントロールであり、
> (一覧の内容ではなく)テキスト入力部の内容が重要視される場合にこそ有効だと思います。

そうですね…。
考えたのですが、やはり3000人近くいるなかで人をドロップダウンリストから探すのは
面倒なのでできればAutoCompleteModeを使用したいと思っていました。

> > なにか代替案などありましたら教えてください。
> DropDownList と TextBox を組み合わせる、とか。

別に画面を設けて職員を確定するように仕様変更案を出してみます。
ありがとうございました。

[ツリー表示へ]