DataGridViewComboBoxColumn 在 Windows 7+ OS 上表现不同
DataGridViewComboBoxColumn behaves differently on Windows 7+ OS
我已经在 Windows 表单中创建了一个客户端应用程序。我使用 Windows Server 2008 R2 进行开发。
然而,客户报告了一些我无法在我的机器上重现的错误,但是当我在 Windows 7 或 10 上部署相同的解决方案时。它给了我不同的结果。
截至目前我现在有两个问题:
DataGridViewComboBoxColumn
背景色变成灰色
- 使用 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;
我已经在 Windows 表单中创建了一个客户端应用程序。我使用 Windows Server 2008 R2 进行开发。
然而,客户报告了一些我无法在我的机器上重现的错误,但是当我在 Windows 7 或 10 上部署相同的解决方案时。它给了我不同的结果。
截至目前我现在有两个问题:
DataGridViewComboBoxColumn
背景色变成灰色- 使用 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;