繁体   English   中英

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

[英]Is there a way to remove the selection line(highlighted) in a databound combox on a datagridview?

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

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

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

项目集合

数据绑定

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

我需要删除此选择行,以便当数据绑定的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具有多个项,效果很好

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

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

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

感谢您的帮助,如果有人可以帮助您

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

public override string ToString()
{
     return FullDescription;
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM