是否可以在DataGridView中显示选择边框而不是背景颜色?

时间:2009-06-15 12:56:09

标签: .net vb.net winforms datagridview

我的DGV根据业务逻辑将行BackColors设置为各种颜色。当用户选择该行时,颜色变为所选择的行BackColor,从而模糊了预设颜色。我想在选择行时保留原始颜色,并指示选择行(可能)围绕所选行的粗体边框。这可能吗?我有一个简单的替代方案吗?

修改 为了说清楚,这是一个WinForms应用程序。

3 个答案:

答案 0 :(得分:6)

另一种可能性是将选择颜色设置为正常背景颜色的较暗色调。这比必须重新实现所选行边界的绘制要简单得多。

因此,当您添加一行时,例如黄色背景

Dim backColor as Color = Color.Yellow
row.DefaultCellStyle.BackColor = backColor
row.DefaultCellStyle.SelectionBackColor = Color.FromArgb(backColor.R * 3 / 4, backColor.G * 3 / 4, backColor.B * 3 / 4)

将每个颜色分量乘以相同的数字< 1可以使颜色变暗,你可以在这里玩弄不同的值来看看最美观的东西。

答案 1 :(得分:3)

为了更改DataGridView的默认行为,通常需要基于DataGridView类派生子类。当我想要改变DataGridView表格单元格的默认行为时,我必须这样做,即输入。按向上和向下箭头,输入键,那种东西。

您提出的问题似乎与创建自定义列相似,我相信您应该遵循相同的步骤。但是,我不确定如何更改背景颜色。

我建议你从那里开始。事实上,当你想要使用datagridview做更多的事情时,我发现你需要这样做。

我想提供一些链接:

MSDN on creating custom columns for the DataGridView

Blog about creating custom input behavior for DataGridView

我知道这可能需要一些时间,你可能希望快速修复,但学习上述内容也可以帮助你完成其他项目。

我可能错了,可能有一种更简单的方式来做你所说的。

另外,尝试使用Google搜索“datagridview自定义行为”。

我相信你在谈论Windows窗体应用程序而不是Web应用程序,对吗?

答案 2 :(得分:0)

您可以使用

<SelectedRowStyle CssClass="MyCssClass" />

您可以在其中创建一个CSS类来定义具有所需边框样式的表格行。或者您可以使用

的内嵌边框样式
<SelectedRowStyle BorderStyle="Solid" BorderWidth="1" BorderColor="Black" />