DataGridViewComboBoxColumn在Windows 7+操作系统上的行为有所不同

时间:2017-08-24 08:42:47

标签: winforms datagridviewcombobox datagridviewcomboboxcell

我在Windows窗体中创建了一个客户端应用程序。我已经使用Windows Server 2008 R2进行开发。

然而,客户端报告的错误很少,我无法在我的机器上重现,但是当我在Windows 7或10上部署相同的解决方案时。它给了我不同的结果。

截至目前我现在有两个问题:

  1. DataGridViewComboBoxColumn后面的颜色变成了灰色。
  2. 使用Tabs或Cursors键在列中移动时,它们会跳过组合框列。 这是最大的问题。
  3. 我使用最少的代码创建了一个测试应用程序,并发现测试应用程序也存在此问题。

    DataGridViewComboBoxColumn column = new DataGridViewComboBoxColumn();
    {
        column.HeaderText = "CB";
        column.Name = "CB";
        column.DefaultCellStyle.BackColor = Color.White;
        //column.CellTemplate = new DataGridViewCheckBoxCell();
        column.DataSource = list;
        column.ValueType = typeof(string);
    
    }
    
    dataGridView1.Columns.Add(column);
    
    dataGridView1.DataSource = dtEmp;
    

    以下是问题的截图:

    Windows 10 - 请注意,尽管移动光标键,但第一列未突出显示
    enter image description here
    Windows 2008-请注意,dfirst列会突出显示,并且单元格不会显示为灰色。
    enter image description here

    非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以尝试将DisplayStyle属性更改为Nothing枚举值,以便您的列可以通过样式和焦点显示。然而,组合框箭头显然会消失,但这对您来说可能不是问题。

this.Column1.DisplayStyle = System.Windows.Forms.DataGridViewComboBoxDisplayStyle.Nothing;

Result

或者尝试将FlatStyle属性更改为Flat,这样您就会看到一个组合框箭头:

this.Column1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;

Flat