【发布时间】:2009-06-15 12:56:08
【问题描述】:
我的 DGV 已根据业务逻辑将行 BackColors 设置为各种颜色。当用户选择行时,颜色会变为所选行的背景色,从而使预设颜色变得模糊。我想在选择一行时保留原始颜色,并在所选行周围使用(可能)粗体边框来指示选择。这可能吗?有没有我想念的简单替代方案?
编辑 明确地说,这是一个 WinForms 应用程序。
【问题讨论】:
标签: .net vb.net winforms datagridview
我的 DGV 已根据业务逻辑将行 BackColors 设置为各种颜色。当用户选择行时,颜色会变为所选行的背景色,从而使预设颜色变得模糊。我想在选择一行时保留原始颜色,并在所选行周围使用(可能)粗体边框来指示选择。这可能吗?有没有我想念的简单替代方案?
编辑 明确地说,这是一个 WinForms 应用程序。
【问题讨论】:
标签: .net vb.net winforms datagridview
另一种可能性是将选择颜色设置为正常背景颜色的较深阴影。这比必须重新实现选定行的边框绘制要简单得多。
所以当你添加一行时,比如说,黄色背景
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)
将每个颜色分量乘以相同的数字
【讨论】:
为了更改 DataGridView 的默认行为,您通常需要从 DataGridView 类派生一个子类。当我想更改 DataGridView 的表格单元格的默认行为时,我必须这样做,就输入而言,即。按上下箭头,回车键之类的。
您的要求似乎与创建自定义列类似,我相信您应该遵循相同的步骤。但是,我不确定如何更改背景颜色。
我建议你从那里开始。事实上,当您想要使用 datagridview 做的事情超出 Microsoft 的预期时,我发现您需要这样做。
我想添加一些链接:
MSDN on creating custom columns for the DataGridView
Blog about creating custom input behavior for DataGridView
我知道这可能需要一些时间,您可能希望快速解决,但学习以上内容也可以帮助您完成其他项目。
我可能是错的,可能有更简单的方法来做你所说的。
另外,尝试谷歌搜索“datagridview 自定义行为”。
我相信您说的是 Windows 窗体应用程序而不是 Web 应用程序,对吗?
【讨论】:
你可以使用
<SelectedRowStyle CssClass="MyCssClass" />
您将在其中创建一个 CSS 类来定义具有所需边框样式的表格行。或者您可以使用内嵌边框样式
<SelectedRowStyle BorderStyle="Solid" BorderWidth="1" BorderColor="Black" />
【讨论】: