• ベストアンサー

Datagridviewのコンボボックスの扱い

VB2010Expressを使用しています。 図のように第1コラムの内容によって第2コラムのアイテムを変更するにはどのようにすればいいのですか? ご教授お願いします。 例)『果物』なら『みかん・りんご・…』、『野菜』なら『大根・たまねぎ・…』のようにしたいです。

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

  • ベストアンサー
noname#259269
noname#259269
回答No.1

こんな感じで。 Private Sub DataGridView1_CellValueChanged(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged If e.ColumnIndex = 0 AndAlso e.RowIndex >= 0 Then Dim combo1 = DataGridView1.CurrentRow.Cells(0) Dim combo2 = DataGridView1.CurrentRow.Cells(1) Select Case combo1.Value Case "果物" combo2.Value = "みかん・りんご・…" Case "野菜" combo2.Value = "大根・たまねぎ・…" End Select End If End Sub

Alshark
質問者

お礼

返事が遅くなってすいません。 うまく動作しました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

こんにちは。 以下の方法で要件を満たせます。 Public Class Form1 'メンバ変数宣言 Private ReadOnly 種類() As String = {"果物", "野菜"} Private ReadOnly 果物() As String = {"みかん", "りんご"} Private ReadOnly 野菜() As String = {"大根", "たまねぎ"} '初期化処理 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'グリッド列にコンボボックス表示項目設定 Me.col種類.DataSource = 種類 End Sub 'コンボボックスの選択確定処理 Private Sub DataGridView1_CurrentCellDirtyStateChanged(ByVal sender As Object, ByVal e As EventArgs) Handles DataGridView1.CurrentCellDirtyStateChanged DataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit) End Sub 'コンボボックスの選択検知処理 Private Sub DataGridView1_CellValueChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged '変数宣言 Dim DGVCmbCell As DataGridViewComboBoxCell If DataGridView1.CurrentCell IsNot Nothing AndAlso DataGridView1.Columns(DataGridView1.CurrentCell.ColumnIndex).HeaderText = "種類" Then 'セル初期化 DGVCmbCell = New DataGridViewComboBoxCell If DataGridView1.CurrentCell.Value = "果物" Then DGVCmbCell.DataSource = 果物 Else DGVCmbCell.DataSource = 野菜 End If DataGridView1.Rows(DataGridView1.CurrentCell.RowIndex).Cells("物品") = DGVCmbCell End If End Sub End Class

Alshark
質問者

お礼

返事が遅くなってすいません。 うまく動作しました。 いろいろな方法があるんですね、独学ですがこれからも精進したいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VB.NET コンボボックスからのitem名のTEXTとりいれについて

    VB.NET 勉強しはじめてまだ3ヶ月の初心者です。 (もし、表現が幼稚ならお許しください。) コンボボックスに3個(りんご、バナナ、みかん)のITEMがあります。 まず、りんごをボックスから選んだと同時に、にわざわざ、"りんご”というtextは別には書かないで、そのままボックスにでているりんごの表示をを果物名(labelFruits) に持ってきたいのですが。できますでしょうか。 me.labelFruits.text = ??????? 果物名以外の表示には収穫量、消費量など計算させるところがあります。

  • エクセルで2段階コンボボックスを作成

    エクセルのシート上にコンボボックスを2つ作成して Aのコンボボックスの内容を選択するとBのコンボボックスの値が変わるというものを作成したいです。 エクセルのプルダウンで最初は考えていましたが、プルダウンだと三角の矢印が常に表示されない為あきらめました。 なのでコンボボックスの作成の仕方を教えて下さい。 例として野菜とくだものをあげます コンボボックスAで選択するもの→ 野菜、くだもの コンボボックスBで選択するもの→  【野菜の場合】キャベツ、にんじん、トマト 【くだものの場合」バナナ、りんご、みかん 以上です。よろしくお願いいたします。

  • ユーザーフォームのコンボボックスでINDIRECT関数を使うにはどのよ

    ユーザーフォームのコンボボックスでINDIRECT関数を使うにはどのようにすればいいでしょうか? Private Sub UserForm_Initialize() Me.ComboBox1.RowSource = "sheet1!B1:C1" ComboBox2 = "=INDIRECT(?)" End Sub ComboBox1で種類のリストが表示され、選んだ項目により ComboBox2のリストが表示されるようにしたいのですが うまくいきません。   1   2    3    4 A 種類 果物   野菜 B 果物 りんご  たまねぎ C 野菜 いちご  ピーマン D    みかん  レタス   (すべて名前を定義しています。) VBAでINDIRECT関数を使うにはどのようにすればよいでしょうか?

  • エクセル グループごとの検索について

    グループごとを検索し、その情報を縦列に表示したいのですが、悩んでおります。 横に表示するのは、以下の関数を使って出来たのですが、 =IF(ISNA(MATCH(COLUMN(A4)&$A4,sheet1!$E$2:$E$700,0)) これだと使い勝手が悪く、困っております。 例えば (sheet1)の情報を、 品種    品名   金額  産地    果物    りんご1 200 津軽 果物1 果物    りんご2 250 むつ 果物2 果物    みかん  300    果物3 果物    ぶどう  400    果物4 ーーーーーーーーーーーーーーーーーーーーーーーー 海外果物  パパイヤ 300    海外果物1 海外果物  アドカボ 100    海外果物2 海外果物  バナナ  130    海外果物3 ーーーーーーーーーーーーーーーーーーーーーーーー 野菜    なす   100    野菜1 野菜    にんじん 200    野菜2 野菜    きゃべつ 300    野菜3 野菜    大根   150 練馬 野菜4 野菜    大根2  180 京都 野菜5 (sheet2)において [A]又は[B]のある位置のセルに、品種(この場合、野菜)を打ち込むと、    [ A ] [ B ]なす   100        にんじん 200        きゃべつ 300        大根   150 練馬     大根2  180 京都   このように、品名と値段、産地が縦に並んで欲しいのです。 どうぞお知恵を貸して下さいませ。 宜しくお願いします。

  • アクセス コンボボックスのリストの条件を指定する

    コンボボックスで表示されるリストを条件に応じて色々に変更できますか? テーブル1 ID 種類   品名 1 やさい  白菜 2 やさい  にんじん 3 くだもの りんご 4 くだもの みかん フォーム1 種類 やさい 品名 ___ コンボボックスリスト        白菜        にんじん 現在は、コンボボックスのリスト(値集合ソース)を テーブル1に指定しておりますので、4個全部表示されてしまいますが、 これを、上で入力した「やさい」を参考にして 「やさい」に該当する「白菜」と「にんじん」しか表示されないようにしたいのです。 よろしくお願いいたします。

  • mysqlからのコンボボックスについて教えてください

    はじめまして。 mysql+php初心者の者ですが、 ご教授をよろしくお願いいたします。 [table 1] id  種類 ---------- 1 野菜 2  果物 3  麺 [table 2] id   key   名前 ---------------------- 1  1 にんじん 2   1 たまねぎ 3   1   ほうれん草 4  2 りんご 5   2   バナナ 6  3 うどん 7   3   ラーメン [table 1]のid と、[table 2]のkeyが 対応するように、連動したコンボボックスを作りたいと思って頑張っています。 コンボボックス1には、[table 1]の、種類が入り コンボボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるように したいと思っています。 たとえば、コンボボックス1で「果物」を選択した場合、 コンボボックス2では、「りんご」「バナナ」がコンボボックスに 表示されて選べるようになるようにするです。 単純に、mysqlからセレクトフォームに表示することはできましたが、 連動がどうやればいいのか、色々調べましたが 力不足で分かりませんでした。 コンボボックスを連動させるために、[table2]に「key」のフィールドを加えたので、 改良しようと思っております。 ご教授をよろしくお願いいたします。 環境 ------- WindowsXP mysql4.0 php4.2 Apache1.3

    • ベストアンサー
    • PHP
  • チェックボックス(複数選択可)の値をPOST送信し、

    果物テーブルの中身を入力フォームにて、チェックボックスにより選択 得られた果物コードをSELECT文により、果物名に変換して表示 保存時は好きな果物1、好きな果物2、好きな果物3、、カラムにコードを保存。 例)あなたの好きな果物は? りんご  みかん  いちご  メロン (チェックボックスにより選択) 果物テーブル: 1 りんご 2 みかん 3 いちご 4 メロン 入力フォームよりPOSTにて選択された果物のコードを送信 入力確認画面にて得られたコードより果物名に変換 選択されたコードを保存 上記のようなイメージです。 例えば、りんご、みかん、いちごを選択された場合、(1,2,3)が得られ、これを分解してSELECTする方法が分かりません。 すなわち配列の操作になるかと思われます。 (1,2,3)コードは取得出来ています。 以上、ご教授頂けたら助かります。

    • ベストアンサー
    • PHP
  • 行と列の関係性を一括編集

    タイトルが分かり難くてすみません。 教えて頂きたいのは、以下のように変更したいのです。 どのようにするのが最も効率が良いでしょうか? 10   果物   野菜   菓子 ------------------------------------------ 20   桜桃   茄子   煎餅 ------------------------------------------ 30   葡萄   白菜   饅頭 ------------------------------------------ 40   蜜柑   玉葱   団子 ↓↓↓↓↓↓ 10   果物   桜桃 ------------------------------------------ 20   果物   葡萄 ------------------------------------------ 30   果物   蜜柑 ------------------------------------------ 40   野菜   茄子 ------------------------------------------ 50   野菜   白菜 ------------------------------------------ 60   野菜   玉葱 ------------------------------------------ 70   菓子   煎餅 ------------------------------------------ 80   菓子   饅頭 ------------------------------------------ 90   菓子   団子 どうぞ宜しくお願いします。

  • コンボボックスの一部のアイテムを選択不可能に

    コンボボックスの一部のアイテムが 選択不可能な状態となるコンボボックスを作成したいのです。 以下のような感じです。 コンボボックス▼ ----果物---- りんご バナナ ----野菜---- キャベツ にんじん コンボボックスの▼部分をクリックすると リストが出てくるようなイメージです。 この[----果物----]と[----野菜----]の欄は 選択しクリックしてもリストを閉じずに無反応な状態にしたいのです。 WordやExcel2007のフォント選択ダイアログ内の [テーマのフォント]、[すべてのフォント]部分に近いイメージです。 変更時に来るイベントでどうにかしようとしましたがうまくできず、 コンボボックスクラスを自作すれば出来るのかなと思いますが、 いまいちどうして良いかわからないです。 VC++2005でMFCを使っています(CComboBox) わかる方がいらっしゃいましたらお教え頂ければ幸いです。

  • コンボボックスでドロップダウンリストにしたときに・・・・

    コンボボックスでドロップダウンリストにしてから実行をすると、最初の項目(一番上)が空白で、その下はリストに書かれてあるように表示されてます。 ドロップダウンしなくても見れるようにするにはどうしたらいのですか? 例: 野菜 ▽    ←ここを表示させたい    みかん    かぼちゃ    りんご    バナナ