tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルDataGridViewのComboboxでドロップリストを使用したい
記事No10858
投稿日: 2012/06/27(Wed) 15:09
投稿者Jinky
はじめまして、よろしくお願いします。

DataGridViewのComboboxでドロップリストを使用したいので
いろいろなサイトを見てソースを組んだのですがうまくいきません。
どなたかご教授をお願いします。

<作業の流れ>
 フォームを開いた時に、DataGridViewを表示
 1列目に「Combobox」、2列目に「Checkbox」、3列目に「Textbox」を
 設定してデータベースのデータを表示したい。

<開発環境>
 VB2008 WinXP(32bit pro)

<現在の実行結果>
 DataGridViewに設定した項目は表示しますが、「Combobox」の
 ドロップリストが表示しません。
 「▼」ボタンは表示します。
 エラーは表示しません。

<ソース>
フォームロード時のモジュール
−−−−−−−−−−−−−−−−−−−−−−−−−−−
Private Sub Frm_MemCrt_Load(ByVal sender As Object, ByVal e As System.EventArgs)_
 Handles Me.Load

 Dim dt0 As New DataTable
 Dim dt1 As New DataTable
 Dim Col_cmb1 As New DataGridViewComboBoxColumn()
 Dim Col_chk1 As DataGridViewCheckBoxColumn = New DataGridViewCheckBoxColumn()
 Dim Col_txt1 As DataGridViewColumn = New DataGridViewTextBoxColumn()

 With Frm_M(フォームの名前)
  With .DG_RecMain(DataGridViewのオブジェクト名)

   'DataGridViewに表示するデータ
   dt0.Columns.Add("列名1", GetType(Integer))
   dt0.Columns.Add("列名2", GetType(Boolean))
   dt0.Columns.Add("列名3", GetType(String))
   dt0.Rows.Add(0, True, "あいうえお")
   dt0.Rows.Add(1, False, "かきくけこ")
   dt0.Rows.Add(2, True, "さしすせそ")

   '項目1のコンボボックス列用データー
   dt1.Columns.Add("ID", GetType(Integer))
   dt1.Columns.Add("名称", GetType(String))
   dt1.Rows.Add(0, "A")
   dt1.Rows.Add(1, "B")
   dt1.Rows.Add(2, "C")

   'DataGridViewに手動で列作成
   '列の自動的作成無効
   .AutoGenerateColumns = False
   .DataSource = dt0

   '列名1列作成(コンボボックス列)
   Col_cmb1.DataSource = dt1
   Col_cmb1.DisplayMember = "名称"
   Col_cmb1.ValueMember = "ID"
   Col_cmb1.DataPropertyName = "列名1"
   Col_cmb1.Name = "列名1"
   .Columns.Add(Col_cmb1)

   '列名2列作成(チェックボックス列)
   Col_chk1.DataPropertyName = "列名2"
   Col_chk1.Name = "列名2"
   .Columns.Add(Col_chk1)

   '列名3列作成(テキストボックス列)
   Col_txt1.DataPropertyName = "列名3"
   Col_txt1.Name = "列名3"
   .Columns.Add(Col_txt1)
  End With
 End With
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−−


「DG_RecMain」の「CellEnter」モジュール
−−−−−−−−−−−−−−−−−−−−−−−−−−−
Private Sub DG_RecMain_CellEnter(ByVal sender As Object,_
 ByVal e As Stem.Windows.Forms.DataGridViewCellEventArgs) _
 Handles DG_RecMain.CellEnter

 Dim dgv As DataGridView = CType(sender, DataGridView)

  If dgv.Columns(e.ColumnIndex).CellType.Name = "列名1" _
  AndAlso TypeOf dgv.Columns(e.ColumnIndex) Is DataGridViewComboBoxColumn Then

  SendKeys.Send("{F4}")
 End If
End Sub
−−−−−−−−−−−−−−−−−−−−−−−−−−−

よろしくお願いします。

[ツリー表示へ]
タイトルRe: DataGridViewのComboboxでドロップリストを使用したい
記事No10861
投稿日: 2012/06/28(Thu) 17:41
投稿者VBレスキュー(花ちゃん)
コードを投稿されるのなら、事象を再現できるコードを作って投稿して頂くと
他の人も試して見ることができるのですが?

投稿された、Form のコードでの動作なら問題無いように思うのですが?

Public Class Form1

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim dt0 As New DataTable
Dim dt1 As New DataTable
Dim Col_cmb1 As New DataGridViewComboBoxColumn()
Dim Col_chk1 As DataGridViewCheckBoxColumn = New DataGridViewCheckBoxColumn()
Dim Col_txt1 As DataGridViewColumn = New DataGridViewTextBoxColumn()

  With DataGridView1

   'DataGridViewに表示するデータ
   dt0.Columns.Add("列名1", GetType(Integer))
   dt0.Columns.Add("列名2", GetType(Boolean))
   dt0.Columns.Add("列名3", GetType(String))
   dt0.Rows.Add(0, True, "あいうえお")
   dt0.Rows.Add(1, False, "かきくけこ")
   dt0.Rows.Add(2, True, "さしすせそ")

   '項目1のコンボボックス列用データー
   dt1.Columns.Add("ID", GetType(Integer))
   dt1.Columns.Add("名称", GetType(String))
   dt1.Rows.Add(0, "A")
   dt1.Rows.Add(1, "B")
   dt1.Rows.Add(2, "C")

   'DataGridViewに手動で列作成
   '列の自動的作成無効
   .AutoGenerateColumns = False
   .DataSource = dt0

   '列名1列作成(コンボボックス列)
   Col_cmb1.DataSource = dt1
   Col_cmb1.DisplayMember = "名称"
   Col_cmb1.ValueMember = "ID"
   Col_cmb1.DataPropertyName = "列名1"
   Col_cmb1.Name = "列名1"
   .Columns.Add(Col_cmb1)

   '列名2列作成(チェックボックス列)
   Col_chk1.DataPropertyName = "列名2"
   Col_chk1.Name = "列名2"
   .Columns.Add(Col_chk1)

   '列名3列作成(テキストボックス列)
   Col_txt1.DataPropertyName = "列名3"
   Col_txt1.Name = "列名3"
   .Columns.Add(Col_txt1)
  End With

End Sub
End Class

[ツリー表示へ]
タイトルRe^2: DataGridViewのComboboxでドロップリストを使用したい
記事No10862
投稿日: 2012/06/28(Thu) 18:25
投稿者Jinky
VBレスキュー(花ちゃん) 様

確認ありがとうございます。
申し訳ありません。
自分のボンミスでした。

DataGridViewの「ReadOnly」を「True」としておりました。
ご迷惑をかけました。

[ツリー表示へ]