グリッドのある列をDataGridViewComboBoxColumn で、displaymember ValueMemberの設定を行って、キーとなるコードと、表示名をセットしています。 データーソースで、キーの値をセットしても、表示名を表示せず、キー値を表示します。 コンボボックスをドロップして、選択すると、表示名を表示してくれるのですが、 そのセルを抜けると、そこの表示が、キー値表示に戻ります。 どうしたら、displaymemberの表示名を最初から最後まで表示するようになるでしょうか? プロパティーの設定がまちがっているのでしょうか?
御教授願います。
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
何か、ほかの要因がある可能性はないですか?
コンボボックスをドロップして選択したときは、ちゃんと表示されるので、
セットは大丈夫だと思います。
初期と、セルを抜けたときに、Key値しか表示しないのは、なにか考えられますでしょうか?プロパティーとかでしょうか?
>セルを抜けたときに
これって、たとえばコンボボックスセルをドロップダウンして、どれか選択して、エンター押して
セルの内容確定して次のセルに移動、のことですよね?
上記の場合でいうと、エンター押す前まではDisplayMemberが表示されているけど、
エンター押したらValueMemberの値になってしまうというイメージです?