none
DataGridViewのコンボボックスのdisplaymemberを表示しない。 RRS feed

  • 質問

  • グリッドのある列をDataGridViewComboBoxColumn
    で、displaymember ValueMemberの設定を行って、キーとなるコードと、表示名をセットしています。
    データーソースで、キーの値をセットしても、表示名を表示せず、キー値を表示します。
    コンボボックスをドロップして、選択すると、表示名を表示してくれるのですが、
    そのセルを抜けると、そこの表示が、キー値表示に戻ります。
    どうしたら、displaymemberの表示名を最初から最後まで表示するようになるでしょうか?
    プロパティーの設定がまちがっているのでしょうか?

    御教授願います。

    2011年3月8日 6:49

すべての返信

  • DisplayMemberとValueMemberの設定で大丈夫と思います。

    以下のようなコードでは正しく動作するはずです。

    Public Class Form1
      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim dt As New DataTable()
        dt.Columns.Add("colValue")
        dt.Columns.Add("colDisplay")
        dt.Rows.Add("key1", "値1")
        dt.Rows.Add("key2", "値2")
        dt.Rows.Add("key3", "値3")
        Dim column As New DataGridViewComboBoxColumn()
        column.DataSource = dt
        column.DisplayMember = "colDisplay"
        column.ValueMember = "colValue"
        Me.DataGridView1.Columns.Add(column)
      End Sub
    End Class
    
    

    何か、ほかの要因がある可能性はないですか?

    2011年3月8日 7:14
  • コンボボックスをドロップして選択したときは、ちゃんと表示されるので、

    セットは大丈夫だと思います。

    初期と、セルを抜けたときに、Key値しか表示しないのは、なにか考えられますでしょうか?プロパティーとかでしょうか?

    2011年3月8日 8:15
  • >セルを抜けたときに

    これって、たとえばコンボボックスセルをドロップダウンして、どれか選択して、エンター押して

    セルの内容確定して次のセルに移動、のことですよね?

    上記の場合でいうと、エンター押す前まではDisplayMemberが表示されているけど、

    エンター押したらValueMemberの値になってしまうというイメージです?

    2011年3月8日 9:03