1

DataGridViewComboBoxColumn で奇妙な結果が得られます。

1) 値が設定されておらず、セル (ドロップダウン矢印ではない) をクリックすると、オプションの最初の値が値として表示され、セルをクリックすると空白の値に戻ります。値が選択されていないため、誤解を招く可能性がありますが、セルをクリックするまで最初の値が表示されます。

1つの解決策は最初のオプションを空白にすることでしたが、それでも次の問題に悩まされています...

2) 値が既にあるセルを選択してから、ないセルを選択すると、最初に選択された値が、値が選択されていないセルに表示されます。繰り返しますが、セルをクリックするとクリアされますが、これも誤解を招きます。

これを誤解を招かないようにしたいのですが...誰か解決策を知っていますか?

DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn(); 

DataTable dt = new DataTable();
dt.Columns.Add("f_Id");
dt.Columns[0].DataType = typeof(string);
dt.Columns.Add("f_Desc");
dt.Columns[1].DataType = typeof(string);

for (int i = 0; i < values.Count(); i++)
{
    dt.Rows.Add(values[i], values[i]);
}

col.DataSource = dt;
col.DisplayMember = dt.Columns[1].ColumnName;
col.ValueMember = dt.Columns[0].ColumnName;
col.HeaderText = header;
col.Name = header;

DataGridView1.Columns.Add(col);
4

2 に答える 2

1

私もこれを探していて、ついにこの問題を解決しました。DatagridView の次のイベントを作成し、[comboboxcolumnNo] を datagridcomboboxcolumn 番号として設定します。

コンボボックス列が編集するフォーカスを取得するたびに、現在のセル値が null であるかどうかがチェックされ、null の場合は何も表示されないコンボボックスの -1 インデックスが表示されます。

    private void datagridview1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {
        if (datagridview1.CurrentCell.ColumnIndex == comboboxcolumnNo && e.Control is ComboBox)
        {
            ComboBox comboBox = (ComboBox)e.Control;
            if (datagridview1.CurrentCell.Value == null)
            {
                comboBox.SelectedIndex = -1;
            }
        }
    }
于 2013-04-30T10:27:20.263 に答える