DataGridViewComboBoxColumn 在 Windows 7+ OS 上表现不同

DataGridViewComboBoxColumn behaves differently on Windows 7+ OS

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

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

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

  1. DataGridViewComboBoxColumn背景色变成灰色
  2. 使用 Tab 或 Cursors 键跨列移动时,它们会跳过组合框列。 这是最大的问题。

我用最少的代码创建了一个测试应用程序,发现测试应用程序也存在这个问题。

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 - 请注意,尽管移动了光标键,但第一列未突出显示

Windows 2008- 注意 dfirst 列突出显示并且单元格未变灰。

如有任何帮助,我们将不胜感激。

您可以尝试将 DisplayStyle 属性 更改为 Nothing 枚举值,这样您的列将按样式设置并且焦点将可见。然而,组合框箭头显然消失了,但这对您来说可能不是问题。

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

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

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