代码之家  ›  专栏  ›  技术社区  ›  Simon

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

  •  3
  • Simon  · 技术社区  · 17 年前

    我的DGV将行背景色设置为基于业务逻辑的各种颜色。当用户选择行时,颜色将更改为所选行背景色,从而使预设颜色变暗。我希望在选定行时保留原始颜色,并在选定行周围用粗体边框指示选定内容。这有可能吗?我有没有一个简单的选择呢?

    编辑 为了清楚起见,这是一个WinForms应用程序。

    3 回复  |  直到 12 年前
        1
  •  6
  •   Patrick McDonald    17 年前

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

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

    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
  •  3
  •   slim Deepak    17 年前

    为了更改DataGridView的默认行为,通常需要基于DataGridView类派生子类。当我想更改DataGridView表单元格的默认行为时,我必须这样做,直到输入结束,即按向上和向下箭头、Enter键等。

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

    我建议你从那里开始。事实上,当您想对DataGridView做比Microsoft预期的更多的事情时,我发现您需要这样做。

    我想包括几个链接:

    MSDN on creating custom columns for the DataGridView

    Blog about creating custom input behavior for DataGridView

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

    我可能错了,也许有一种更简单的方法可以做到你所说的。

    此外,还可以尝试在Google上搜索“DataGridView自定义行为”。

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

        3
  •  0
  •   Matthew Dresser    17 年前

    你可以使用

    <SelectedRowStyle CssClass="MyCssClass" />
    

    在这里,您将创建一个CSS类来定义具有所需边框样式的表行。也可以使用内嵌边框样式

    <SelectedRowStyle BorderStyle="Solid" BorderWidth="1" BorderColor="Black" />
    
    推荐文章