【问题标题】:Is it possible to show a selection border rather than back-colour in a DataGridView?是否可以在 DataGridView 中显示选择边框而不是背景颜色?
【发布时间】:2009-06-15 12:56:08
【问题描述】:

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

编辑 明确地说,这是一个 WinForms 应用程序。

【问题讨论】:

    标签: .net vb.net winforms datagridview


    【解决方案1】:

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

    所以当你添加一行时,比如说,黄色背景

    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 来自我。这实际上是一个非常聪明的解决方案!谢谢分享。
    • 确实非常聪明。在这里开箱即用 - 或者在这种情况下:网格行。
    【解决方案2】:

    为了更改 DataGridView 的默认行为,您通常需要从 DataGridView 类派生一个子类。当我想更改 DataGridView 的表格单元格的默认行为时,我必须这样做,就输入而言,即。按上下箭头,回车键之类的。

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

    我建议你从那里开始。事实上,当您想要使用 datagridview 做的事情超出 Microsoft 的预期时,我发现您需要这样做。

    我想添加一些链接:

    MSDN on creating custom columns for the DataGridView

    Blog about creating custom input behavior for DataGridView

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

    我可能是错的,可能有更简单的方法来做你所说的。

    另外,尝试谷歌搜索“datagridview 自定义行为”。

    我相信您说的是 Windows 窗体应用程序而不是 Web 应用程序,对吗?

    【讨论】:

      【解决方案3】:

      你可以使用

      <SelectedRowStyle CssClass="MyCssClass" />
      

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

      <SelectedRowStyle BorderStyle="Solid" BorderWidth="1" BorderColor="Black" />
      

      【讨论】:

        猜你喜欢
        • 2019-07-29
        • 1970-01-01
        • 2021-09-17
        • 2022-01-21
        • 2014-01-15
        • 2021-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多