• ベストアンサー

DataGridViewの中のComboBoxについて

2005.netを使用しています。 DataGridViewの中のComboBoxで選択された値のIndexを取得したいのですが、どうにも理解ができておらず苦戦しています。 ComboBoxの値は列の編集から入力しています。 どうか、ご指導お願いします。

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

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

フォームにメンバー変数として Dim WithEvents combCtl As DataGridViewComboBoxEditingControl を追加 DataGridViewのCellLeaveイベントで combCtl = nothing DataGridViewのEditingControlShowingイベントで if TypeOf e.Control Is DataGridViewComboBoxEditingControl then   combCtl = CType( e.Control, DataGridViewComboBoxEditingControl ) end if combCtlのSelectedIndexChangedイベントで MsgBox( combCtl.Text ) といった具合でしょう …

kuroyume21
質問者

お礼

ご丁寧にありがとうございます。 すんなり問題解決することができました。

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

その他の回答 (1)

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

どのようなタイミングでそのデータを取得したいのでしょう たとえば ボタンを押したときとか、セルの選択が変わったときとか そのタイミングにより イベントの引数から情報を引き出すのか データグリッドビューのプロパティから取得しないといけないのかが異なってきます ボタンが押された際の場合なら if TypeOf DataGridView1.CurrentCell Is DataGridViewComboBoxCell then   dim Comb as DataGridViewComboBoxCell = DataGridView1.CurrentCell   MsgBox( Comb.Items.IndexOf( Combo.Value ) ) end if といった具合です

kuroyume21
質問者

補足

大変、返事がおそくなって申し訳ありません。  ボタンが押されたときでもいいと思うんですが、私の希望としては、 ComboBoxの中から選らばれた時ですね。

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

関連するQ&A

  • DataGridViewのComboBoxについて

    お世話になります。 現在、VB2008にて、 csvファイルの内容をDataGridViewに書き込むという プログラムの作成をしているのですが、 csvの中身を書き込むという作業はできるのですが、 ComboBoxの列のみ、値が書き込まれません。 csvの値は、DataGridViewのComboBoxのリストと同じ値を 入力しており、リスト以外の値が入力されている ということはありません。 Dim Items() As String '一行を, (カンマ)で区切って項目ごとに分解 Items = Line.Split(",") For n = 0 To Items.Length - 1 If Items(n).Replace("""", "") = Nothing Then Items(n) = "0" End If Next n 上記のコードで、 Items()という変数に、csvの値を格納し、 DataGridVIew1.Rows(0).Cells(0).Value = Items(0) という形で値を格納していますが、 どうしてもComboBoxの列のみ変化がありません。 どなたか、解決策もしくはComboBox列などに関する 情報などをご教授願えないでしょうか、 よろしくお願いします。

  • DataGridViewで、選択した行の値を取得したい。

    VB2005環境です。 VB2005で、選択した行の、特定の列から値を取って、 テキストボックスに出力したいと思っています。 Itemプロパティかと思い、 TxtBox1.Text = Me.DataGridView1.Item _(0,Me.DataGridView1.CurrentRow.Index).ToString と記述してみました。1列目の、選択した行と交わるセルの 値が取れるかと思いきや、うまく取得できません。 方法を教えていただけないでしょうか? よろしくお願いします。

  • DataGridViewに関して

    開発環境:Visual Basic2008 Express Ediotion DataGridViewに関して教えて下さい。 DataGridViewに表示されているデータの中で、何行目が選択されているか を取得したいと考えています。 動作手順としては、DataGridViewのデータが選択された状態で、選択ボタンを押した 際に、どのデータが選択されているかを取得したいと考えています。 恐らく可能かと思われますが、何行目だけでなく、行にある項目の全ての値も取得 したいと考えています。 どのように記述したら良いかを教えて下さい。 参考になるようなホームページ、もしくはコードを記述して頂ければ幸いです。 Visual Basic2008初心者なので、初歩的な質問で申し訳ありません。 よろしくお願いします。

  • VB2010 ComboBoxの使い方について、教えてください。

    VB2010 ComboBoxの使い方について、教えてください。 From[デザイン]にて、ComboBoxを配置し、タスクの「項目編集・・・」で項目を設定しました。 項目の内容は、以下の四つ。 AAA BBB CCC DDD イベントが発生すると Private Sub ComboBox_SelectedIndexChanged(....)に入り、この中で Dim index As Integer index = Me.ComboBoxFU.SelectedIndex とすれば、indexの値が変わると踏んでいましたが、値が変わりません。 Webで調べてみましたが、皆ソース上での設定しか書いていないようです。 初期設定での設定方法を教えてください。 以上、よろしくお願いします。

  • C# DataGridViewのループ処理

    DataGridViewの特定列の値を1行ずつ取得し 入力データが全角文字か入力チェックを行いたいと考えています。 DataGridViewの特定列を1行ずつ確認するループ方法を ご教示頂ければと思います。

  • VB2005のDataGridViewについて

    プログラム側からはいろいろなセルに値を入力できて、 でも、ユーザー側からは行しか選択させない、かつ編集させないっていう方法ありますか? DataGridViewのSelectionModeをFullRowSelectにすると、 選択方法が行だけになるんですが、 入力もColumnIndexが0でないと、セルに値が入力できなくなってしまうんです。(つまり、1行につき1つのセルにしか入力できない) なんかいい方法はありますか?

  • VB.netのDataGridViewについて

    VB.netのDataGridViewについての質問です。 DataGridViewで出力された行を選択して、 その行の値をテキストボックスなどに出力させることは可能なのでしょうか? やりたいことは 1.データベースより取得してきたDatatableをDataGridViewに出力 2.出力されたDataGridViewの行を選択する 3.その選択された行の項目(複数)の値を画面上の個々の   テキストボックスなどに反映させる です

  • VBAのComboBoxについて

    UserForm1にComboBoxが8個(ComboBox1~8)あります。 各ComboBoxはSheet1の下記列に入力されているリストを表示します。 ComboBox1 : A列 ComboBox2 : B列 ComboBox3 : C列 ComboBox4 : D列 ComboBox5 : E列 ComboBox6 : F列 ComboBox7 : G列 ComboBox8 : H列 ComboBox9 : I列 ComboBox10 : J列 そこで、UserForm1の各ComboBoxでデータ選択する際に、リストにある場合はそれを選択し、リストにない場合はComboBoxに新しいデータを入力し、UserForm1のCommandButton1を押下時にその新しいデータをSheet1の各列に追加したいのですが、どのようにしたらよいのでしょうか。 Sheet1にあるリストをComboBoxに表示するところまではできています。 ※ComboBoxの番号とリストの列番号を一致させています。 --------------------------------------------------------------- Private Sub UserForm_Initialize() Dim lastrw As Integer, retu As Integer, i As Integer For retu = 1 To 10 lastrw = Sheet1.Cells(1, retu).End(xlDown).Row For i = 1 To lastrw - 1 Controls("ComboBox" & retu).AddItem Sheet1.Cells(i + 1, retu).Value Next i Next retu End Sub ---------------------------------------------------------------

  • DataGridView編集中のイベント取得

    VS2008を使用して勉強中の初心者です。 現在、習作しているアプリケーションの中で 以下の動作を実現させたいと思っています。 ・DataGridView編集時、エンターキーを押下した場合  「編集を終了して下のセルを選択する」から  「編集中の文章を改行させる」への変更。 ・DataGridView編集時、シフト+エンターキーを押下した場合  「編集中の文章を改行させる」から  「編集を終了する」への変更。 以上2点なのですが、そもそも編集中のDataGridViewへの 入力に対して、KeyPressイベント等を取得する方法がわからずに 実現できずにいます。 実装する為の方法・もしくは仕組みがわかるサイト等を ご存知の方がいらっしゃいましたら、よろしくお願いいたします。

  • DataGridViewのカラムに自動で連番

    図のようにDataGridViewの2カラム目のコンボボックスに曜日をいれてあります。 DataGridViewは入力すると行が自動で増えていきますが コンボボックスを選択した段階でカラム1に1,2,3と連番をいれたいのですが 可能でしょうか 環境 windows XP 開発 Microsoft VisualBasic Express 2010 曜日の表示はサイトの例題をはりつけています。 Dim column As New DataGridViewComboBoxColumn() 'ComboBoxのリストに表示する項目を指定する column.Items.Add("日曜日") column.Items.Add("月曜日") column.Items.Add("火曜日") column.Items.Add("水曜日") column.Items.Add("木曜日") column.Items.Add("金曜日") column.Items.Add("土曜日") '"Week"列にバインドされているデータを表示する column.DataPropertyName = "Week" '"Week"列の代わりにComboBox列を表示する DataGridView1.Columns.Insert(DataGridView1.Columns("Week").Index, column) DataGridView1.Columns.Remove("Week") column.Name = "Week"