有没有办法删除datagridview上数据绑定的combox中的选择行(突出显示)?

时间:2019-04-26 13:30:03

标签: c# datagridview datagridcomboboxcolumn

我在使用数据绑定的datagridviewcomboboxcell时遇到了麻烦

我想删除出现在数据绑定的组合框上的蓝色选择线。

我注意到,如果comboboxcell不是数据绑定的,但是有一组项目,则不会出现蓝线。但是数据绑定组合框确实具有它。

item collection

Databound

您将在第一张图片中看到蓝色选择行,但是在下一张图片中(数据绑定的组合框单元格中)有...

我需要删除此选择行,以便当数据绑定的comboboxcell仅具有一行数据时,用户只能通过键盘输入来进行选择。

我最初尝试添加一个keyDown事件来设置Items [index],但确实会更改该值,但是,当我离开单元格时,它会显示Model Name和名称空间。然后,当返回到单元格时,将显示该值。

我使用以下代码执行此操作: 我在组合框中添加了一个keydown事件,这是keydown事件

private void dataGridView_KeyDown(object sender, KeyEventArgs e)
    {

        if (e.KeyCode == Keys.Enter)
        {
            if (dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].CellType.Name == "DataGridViewComboBoxCell" && dataGridView1.CurrentCell.ReadOnly == false)
            {
                DataGridViewRow row = dataGridView1.CurrentRow;
                try
                {
                    if ((row.Cells[dataGridView1.CurrentCell.ColumnIndex] as DataGridViewComboBoxCell).Items.Count == 1)
                    {
                        (dataGridView1.CurrentRow.Cells[dataGridView1.CurrentCell.ColumnIndex] as DataGridViewComboBoxCell).Value = taxcodes[0];
                        (dataGridView1.CurrentRow.Cells[dataGridView1.CurrentCell.ColumnIndex] as DataGridViewComboBoxCell).DisplayMember = "FullDescription";
                        (dataGridView1.CurrentRow.Cells[dataGridView1.CurrentCell.ColumnIndex] as DataGridViewComboBoxCell).ValueMember = "TaxID";

                    }


                }
                catch
                {

                }
            }
        }

现在,我试图更改设置组合框的值时没有任何运气,我将继续研究下一个可能可以使用的解决方案。

如果我可以使Combobox最初选择时没有选择行,那么只要该行移至列表中的唯一项目,它就会选择将其选为值的能力。

注意:具有多个项目的数据绑定组合框效果很好

注意:定义了项目的非数据绑定comboboxcell效果很好,但是我需要一个displaymember以及value成员

当组合框只有一个项目时,此查询的理想结果将使我能够选择一个数据绑定的组合框项目(利用ENTER键)。

最后的提示:当我使用鼠标在只有1个项目的数据绑定comboboxcell上进行选择时,它会完美工作。

感谢大家的帮助

1 个答案:

答案 0 :(得分:0)

因此,在咨询了一位朋友之后,我设法覆盖了.ToString()方法

public override string ToString()
{
     return FullDescription;
}

在这种情况下,这对我有用,而Keydown路线是正确的路线。