2009-06-15 68 views
3

我的DGV将行BackColors设置为基于业务逻辑的各种颜色。当用户选择该行时,颜色将变为选定的行BackColor,从而模糊了预设的颜色。我希望在选中某一行时保留原始颜色,并在选定行周围(可能是)粗体边框指示选择。这可能吗?我错过了一个简单的选择吗?是否可以在DataGridView中显示选择边框而不是背景颜色?

编辑 要说清楚,这是一个WinForms应用程序。

回答

5

另一种可能性是将选择颜色设置为正常背景的较暗阴影。这将比重新实现选定行的边框绘图要简单得多。

所以,当你添加有,比方说一个排,一个黄色背景

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用于颜色变暗乘以每个颜色成分,你可以玩不同的价值观这里查看什么让你最美观。

+0

我没意识到你可以在单个行上设置选择颜色。问题解决了! – Simon 2009-06-15 14:27:45

0

您可以使用

<SelectedRowStyle CssClass="MyCssClass" /> 

,你需要创建一个CSS类来定义你所需要的边框样式表行。或者你可以使用在线边框造型与

<SelectedRowStyle BorderStyle="Solid" BorderWidth="1" BorderColor="Black" /> 
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应用程序,正确吗?