• ベストアンサー

リストボックスの使い方で…

VB2005で開発をしております。 リストボックスに品目名を表示し、選択した品目名の品目コードをDBに登録したいと思っています。 ただ、品目名の裏で品目コードを保持しておく方法がわかりません。 なにか良い方法があれば教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • g_liar
  • ベストアンサー率52% (382/728)
回答No.2

ListBoxでなくて表コントロールのDataGridViewを使うのはどうでしょ? 品目名と品目コードの2つの列を作って、品目コードの列プロパティのVisibleをFalseにしておけば、列としては存在し、値の保存はできますが表示はされません。 そこに品目コードを格納しておくのです。 初期デバッグ時は一時的にVisible=Trueにすれば品目名とコードがセットで格納できてるかも簡単に確認できます。 ListBox.Items.Addの代わりに、DataGirdView.Rows.Add(行数)を行ったあと、DataGirdView.Item(列番号, 行番号).Value=値…とします。 あとは、DataGridViewの以下のプロパティをいじって見た目はListBoxっぽい動きをさせればOKです。   RowHeadersVisible=False   ScrollBars=Vertical   SelectionMode=FullRowSelect   (これで全部ではないかも?あとは自力で調べてください)

その他の回答 (3)

回答No.4

ANo.3です。 …根本的な事を忘れていたかもしれません。 元々、品目情報をDBから取得しているのなら、ListBoxのDataSourceに DBの内容(DataTableとか?)を割り当て、DisplayMemberに 品目名のカラム、ValueMemberに品目コードのカラムを割り当てる方が 早いかもしれません。 (その手のやり方は、やった事無いけど…データバインド自体、ほとんど やった事無いので(汗))

回答No.3

どうしてもListBoxで処理するなら、 品目名と品目コードを持った構造体のクラスを作成し、それを使用する 必要があります。 私も うろ覚えですが、少しだけ説明すると、 ・品目名と品目コードを持った構造体のクラスを作成  (ただの構造体じゃダメです) ・上記のクラスで、品目名を公開するプロパティと、品目コードを  公開するプロパティを作成  あとは…ToStringメソッドなんかも必要だったかな? ・構造体クラスにデータをセット ・ListBoxのDataSourceに、上の構造体クラスを設定 ・ListBoxのDiaplayMemberに、上の構造体クラスの品目名プロパティを割り当てる ・ListBoxのValueMemberに、上の構造体クラスの品目コードプロパティを割り当てる ・選択された品目のコードを参照する際は、ListBox.SelectedVaueプロパティを参照 …みたいな感じだったはず。 私がやろうとした時は、確かヘルプを探しまくったら どこかに載ってたはずなので (ListBoxのプロパティ関連だったか?)、分からなければ探してみて下さい。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

.NET Framework側だけでやろうとするなら配列やリストまたはクラスなどで品目名と品目コードを関連付けして別に持っている必要がありそうです VB6互換ライブラリを使うと SetItemData/GetItemDataでコードと品目名を関連付けできます 『Microsoft.VisualBasic.Compatibility』の参照の追加をしておいて Imports Microsoft.VisualBasic.Compatibility をフォームコードの先頭付近で宣言しておきます リストボックスのデータを登録する際に ListBox1.Items.Add(ss) VB6.SetItemData( ListBox1. ListBox1.Items.Count-1, nCode ) といった具合にします コードを取り出すには nCode = VB6.GetItemData( ListBox1, ListBox1.SelectedIndex ) といった具合にします

関連するQ&A

  • コンボボックスかリストボックスの使い方

    VB2008でプログラミングしています。 コードと値がセットになっているDBからデータを取得して フォームに表示させるように作成しています。 フォームに表示するのは値で、実行ボタンを押したときには コードを取得したいのですが この場合は、コンボボックスでしょうか?リストボックスでしょうか? 複数選択はできません。 選ばれたコードを元にDBを検索するプログラムが実行されます。

  • リストボックスから直接引き金を引く

    お世話になります。 早速ですが、 今、あるaplを書いていまして、 処理内容はリストボックスからキーを選択させ、 そのキーでDBを検索、表示するというモノです。 現在のロジック、つくりは、 リストボックスの下に(「表示」という)ボタンを設置してあり、 リストボックスからキーを選択した後、 そのボタンを押すことでcgiに戻りDBを検索する、 となっています。 ボタンのコード;<input type=submit value="表示"> ここで質問ですが、 リストボックスからキーを選択したらそのままDB検索へ移行するような コードを教えて欲しいのです。 (いちいち表示ボタンを押さなくて良いやり方です) 以上、宜しくお願いします。

    • ベストアンサー
    • CGI
  • リストボックスについて

    PHPをはじめて間もないのですが、質問します DB(MySql)のテーブルを使用してリストボックスの 選択肢をさせるようにしたいのですが、 同じ1つのリストボックスで選択するようにします テーブル CodeNo 商品名   分類 0001  バナナ   果物 0002  みかん   果物 0003  ピーマン  野菜 0004  トマト   果物 0005  もも    果物 0006  にんじん  野菜 のようなデータがあるとします (1)選択肢は分類のデータを表示します    果物    野菜 (2)(1)で選択された分類の商品名を選択肢にします    果物選択したとする    バナナ    みかん    トマト    もも (3) (2)で選択されたCodeNo,商品名を表示する    トマトを選択したとする 0004  トマト がテキストボックスに表示されるようにします。 以上のようなことをPHPですべてするにはどのようにすれば よいのか、ご教授いただけませんでしょうか? よろしくお願いいたします。    

    • 締切済み
    • PHP
  • VB6.0 コンボBOXからのリスト表示について

    たとえば画面からの伝票入力処理などで... 「商品コード」の入力域を、コンボBOXにして、直接手入力でも、リストからの マウスクリック選択でも入力できるようにするとします。 この様な場合リストには、通常は「商品マスタ」の「商品コード」を、リスト表示 しますね。 実は今回、このリストにコードだけでなく横に並べて「商品名」も表示したいの です。もちろん「商品マスタ」に「商品名」を持っているものとします。 但し、もともとのコンボBOXの幅はコード文字数分のみとし、「商品名」分の 長さは、取っていないものとします。 以上、Accessでは標準機能で当たり前のように簡単にできる事ですが、 VB6.0ではどうなのでしょうか? 出来るのであれば、教えて下さい。

  • リストボックス

    VB.NETでWindowsMobile5.0の開発をしてます。 リストボックスのアイテムを削除するとアイテムのフォーカスが消えてしまいます。 続けて削除としたいのですがリストボックス内のアイテムにフォーカスを移すにはどうすれば良いのでしょうか。 初歩的な質問で申し訳ありませんがよろしくお願いします。

  • リストボックスから選択した拡張子を含むものを抽出

    開発環境:VB2008 VB初心者です。 ディレクトリ指定してリストボックスにディレクトリ内のファイル名を書き出すプログラムを作成しました。 その後、チェックボックスでtxtやdocなど拡張子を指定し、ボタンを押すとそのチェックした拡張子を含むファイル名だけリストボックスに書き出す処理のところで詰まっています。 やり方が悪いのかもしれません。別の簡単な方法があるのでしょうか。 どなたかサンプルでも書いていただけたらうれしいです。 よろしくお願いいたします。

  • ACCESS2003 リストボックスについて教えて頂けませんか?

    こんにちは、何度も助けていただいているのですが、 また、わからないことがありまして進めなくなってしまいました。 どなたかアドバイス頂ければと思います。 現在Access2003にて会社の勤務表を作成するという課題に 取り組んでおります。 今回の疑問点は 入力用のフォーム フォーム1にはユーザー名コンボボックス、 日付Calendarコントロール、出社時間、退社時間、作業時間、 作業内容テキストボックス、登録、クリアコマンドボタン、 勤務状況表示リストボックスの各コントロールがあります。 登録をする際には各コントロールを選択ないし入力をし、 登録ボタンで各コントロールの値を勤務状況表示リストボックス に表示するようになっています。(1日分の登録を1行で表示。 登録状況に関わらず1ヶ月毎に表示しているので、まだ何もしていなく ても1ヶ月分の31行が表示されており、毎日登録をしていくことで 時間などがうまっていくようになっています。) ここまでは何も問題ないのですが、 勤務状況表示リストボックスに表示されている任意の日付、 例えば8日の行を選択した時に8日の行に表示されている ユーザー名、日付、出社時間、退社時間、作業時間、作業内容を 入力をした各コントロールと連動し表示させるようにしたいのです。 いろいろ調べてはいるのですがなかなかいい方法が見つかりません。 今の段階では1日の行しか選択できない状態です。 どなたかよい方法をご存知ありませんでしょうか? よろしくお願いします。

  • VBとリストボックス

    こんにちわ。 いまVB6.0sp5でリストボックスに チェックボックス付きのリストを表示し, クリックで複数選択するロジックを組んでいます。 リストに表示するデータ件数がリストボックスの高さを超えるため, 横スクロールさせる必要があります。 そこで,2列目のキャプションをクリックすると, スクロールし,選択した行以外のチェックボックスが見た目, 消えてしまいます。 なお消えたチェックボックスの箇所をクリックすると, その行のチェックボックスが選択された状態で表示されます。 2列目のキャプションをクリックしたときに,ほかの行のチェックボックスを 消さないようにしたいのですが, どうすれば良いでしょうか? 教えてください。 宜しくお願いします。

  • リストボックスから直接引き金を引く

    お世話になります。 早速ですが、 今、あるaplを書いていまして、 処理内容はリストボックスからキーを選択させ、 そのキーでDBを検索、表示するというモノです。 現在のロジック、つくりは、 リストボックスの下に(「表示」という)ボタンを設置してあり、 リストボックスからキーを選択した後、 そのボタンを押すことでcgiに戻りDBを検索する、 となっています。 <FORM action="./DB.cgi" method="POST"> <div> <select name="key" size="3"> <option value="aaa">aaa <option value="bbb">bbb <option value="ccc">ccc <option value="ddd">ddd <option value="eee">eee <option value="fff">fff </select> </div> <input type=submit value="表示"> <input type="hidden" name="mode" value="display"> </FORM> ここで質問ですが、 リストボックスからキーを選択したらそのままDB検索へ移行するような コードを教えて欲しいのです。 (いちいち表示ボタンを押さなくて良いやり方です) 以上、宜しくお願いします。

    • ベストアンサー
    • Java
  • ACCESSでコンボボックスからの入力でリスト外の追加をフォームを使っ

    ACCESSでコンボボックスからの入力でリスト外の追加をフォームを使って登録 ACCESSのフォームを使ってデータ入力を作成しています、"顧客名"をコンボボックスを使って選択するようにしていますが。 リスト外の新規顧客を入力する際には別の"顧客登録"フォームが開いて、顧客情報(読み仮名、顧客名、都道府県コード、所在地)を入力して、閉じると登録した"顧客名"がコンボボックスから選択できるようにしたいと思い、マクロを使用して(VBはよくわからないので) イベント→リスト外入力時→”顧客登録”フォームが開く 必要事項を入力し、閉じるボタンをクリック。 してみたのですが、コンボボックスのリストに先に入力した新規データが出てきません。 何が足りないのかご教授お願いいたします

専門家に質問してみよう