重複した項目を持つコンボボックスで、指定行を選択状態にするには?

解決


ゆーき  2004-10-15 01:25:49  No: 116983

コンボボックスで、例えば「あああ」とゆう値が0行目〜5行目に重複して入っていたとすると、どの行を選択しても、再度コンボボックスをクリックすると一番上の行が選択された状態になっています。
ComboBox.SelectedIndex = 2
などをしてみましたが3行目は選択されませんでした。
どうしたらよいのでしょうか?よろしくお願いします。


ABC  2004-10-15 09:59:02  No: 116984

質問ですが、重複した項目が入っていたとき0行目の項目を選ぶのと1行目の
項目を選ぶのでは何か違いがあるのですか?
それを選択するユーザーは0行目と1行目の違いについてどのように知るの
ですか?


ゆーき  2004-10-15 16:20:50  No: 116985

コンボボックスで選択行に応じた値を、右隣にあるラベルに表示しています。
1行目を選択するとSelectedIndex はちゃんと1になるので、ラベルの値は変えられますが、再度選択し直そうとすると0行目が選択された状態になっているます。
帳簿を作っていまして、コンボボックスで「○○を販売」等の項目を選択すると、右隣のラベルに「売上」や「掛売上」が表示されます。コンボボックスの項目を重複さないで、ラベルの方をリストボックスにするとゆう方法もありますが、これだとユーザーの操作を1つ増やしてしまいます。


ゆーき  2004-10-15 16:30:30  No: 116986

VB.Netで作ってます。


葉月  2004-10-15 17:53:50  No: 116987

[6.0]であれば、データコンボでしたっけ?(とにかく標準でないコンボ)
コントロールを追加し、そのコンボボックスを使用すれば
重複もうまくごまかせた気もします

あとは項目名を変更しても良いなら、
1項目毎に半角スペースを追加していき
同一の項目名にならないような対処なども考えられます

実は上記内容、2年程前に私がここで質問したことあるんです(^^;
[6.0]なんですけどね
今考えるとどうしてそんな処理が必要だったのかすら忘れましたが・・・


いな  2004-10-15 18:30:09  No: 116988

>コンボボックスで「○○を販売」等の項目を選択すると、
>右隣のラベルに「売上」や「掛売上」が表示されます。

なんか、微妙なコンボボックスだなぁ
自分だったら
コンボボックスの中身を
「○○を販売(売上)」「○○を販売(掛売上)」とかにしちゃうけど

>ユーザーは、「○○を販売」だけでわかるの?

たとえば「掛売上」を選択したいのに、
「○○を販売」を選択するのはよいとして、
右のラベルにもし「(売上)」と出てしまったら、
右のラベルに「(掛売上)」が出るまで、
別の「○○を販売」選択させ続けるの?それこそなんか、無駄なような気がする。


特攻隊長まるるう  2004-10-15 18:40:27  No: 116989

>なんか、微妙なコンボボックスだなぁ
うん。ボクもそう思う。

DropDown SelectedIndexChanged SelectedValueChanged イベントで
何が変わるのか調べてみたけど SelectedIndex とドロップダウン
リストの選択項目は関係ないみたい。で、ドロップダウンで1項目目が
選択されている状態でも SelectedIndexChanged イベントは発生せず、
ドロップダウンリストを閉じた時点で、その時選択されている項目に
SelectedIndex が変更される。…ただしこれは普通にユーザがリストを
選択した時と同じ動作です。
コンボボックスには FindString メソッドってのがあったりしますが、
どうも SelectedIndex でなく Text を基準に動作させているみたい
ですね。

という事は、コンボボックスのリストボックスを表示してリストを選択
する内部処理に割り込まないといけないようです。で、そのあたりは
ボクが調べた範囲では見つかりませんでした。
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200410/04100021.txt
↑の時も調べたのですが、リストボックスを操作する部分が公開されて
無いかもしれません。このあたりの操作をオーバーロードできるような
情報があればどうにかなるかもしれません。

>コンボボックスの項目を重複さないで、ラベルの方をリストボックスに
>するとゆう方法もありますが、これだとユーザーの操作を1つ増やしてしまいます。
との事ですが、これはコンボボックスを見ただけでは何番目が選択され
ているか分からないという事ですよね?。で、ドロップダウンリストを
表示しないと分からないです。この質問が解決できたとして、それでも
操作を増やしているのでは?

エクセルなんかで新規ブックを追加し続けると連番が付きます。同じ項目
をコンボボックスに入れるなら連番をつけるべきなんじゃないでしょうか?。

[VB.NET]のコンボボックスには、Item として表示する文字列だけでなく
独自のオブジェクト(構造体とか)を追加できます。ToString プロパティを
オーバーロードすれば表示文字列を操作できます。SelectedItem を利用
すれば色々な情報を設定し、取り出す事ができます。このあたりで調整する
のが建設的でしょう。

あとは自作するとかになりますね。


ゆーき  2004-10-15 20:05:03  No: 116990

>なんか、微妙なコンボボックスだなぁ
>自分だったら
>コンボボックスの中身を
>「○○を販売(売上)」「○○を販売(掛売上)」とかにしちゃうけど
そうですよねー。この方が親切ですよねー。「○○を販売(売上)」で行こうと思います。
貴重なアドバイス本当にありがとうございましたm(_ _)m


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加