bennyking 发表于 2024-3-3 16:03:16

C1TrueDBGrid 的 FetchCellStyle设置样式后,选中单元格变色的行后,HighlightRow ...


C1TrueDBGrid 的 FetchCellStyle设置样式后,选中单元格变色的行后,HighlightRow 对此单元格不生效,如何然他就不对FetchCellStyle生效呢

设置行选中样式
C1TrueDBGrid1.MarqueeStyle = C1.Win.C1TrueDBGrid.MarqueeEnum.HighlightRow




#Region " C1TrueDBGrid FetchCellStyle "
    Private Sub C1TrueDBGrid1_FetchCellStyle(sender As Object, e As C1.Win.C1TrueDBGrid.FetchCellStyleEventArgs) Handles C1TrueDBGrid1.FetchCellStyle
      Select Case e.Column.Name
            Case "设备领用"
                If C1TrueDBGrid1(e.Row, "设备领用单未归还").ToString() <> "" Then
                  e.CellStyle.BackColor = Color.LightYellow
                  e.CellStyle.ForeColor = Color.Black
                End If
      End Select
    End Sub
#End Region




图示中,红色的部分,鼠标没点击此行时候,就让他为黄色的样式,选中后能否就为蓝色,现在选中后,也是黄色的。感觉不那么美观。老师求教,谢谢。




Richard.Ma 发表于 2024-3-3 16:03:17

请参考下面的代码
通过grid.SelectedRows.IndexOf(e.Row)==-1来判断,该单元格是否是选中行(高亮),




      private void C1TrueDBGrid1_FetchCellStyle(object sender, FetchCellStyleEventArgs e)
      {
            var grid= (C1TrueDBGrid)sender;

            if (e.Row == 0 && e.Col == 3 && grid.SelectedRows.IndexOf(e.Row)==-1)
            {
                //var selrows = grid.SelectedRows.IndexOf(e.Row);
                e.CellStyle.BackColor = Color.Green;
            }
      }

Richard.Ma 发表于 2024-3-4 10:01:55

看起来是优先级的问题。

你可以尝试在FetchCellStyle 事件中,也对行序号做一个判断,来判断该单元格是否为HighlightRow,然后再代码设置

bennyking 发表于 2024-3-4 10:13:41

Richard.Ma 发表于 2024-3-4 10:01
看起来是优先级的问题。

你可以尝试在FetchCellStyle 事件中,也对行序号做一个判断,来判断该单元格是 ...

老师,我还真不知道如何判断 HighlightRow状态,您能否贴出这个事件的代码么,让我也参考下,谢谢

Richard.Ma 发表于 2024-3-5 01:29:49

明天验证后给你答复

bennyking 发表于 2024-3-5 09:21:34

万分感谢,:lol:lol:lol:lol:lol:lol:lol:lol

bennyking 发表于 2024-3-5 16:09:01

收到,谢谢,我试试看,感谢老师的解答

Richard.Ma 发表于 2024-3-5 16:13:45

不客气
页: [1]
查看完整版本: C1TrueDBGrid 的 FetchCellStyle设置样式后,选中单元格变色的行后,HighlightRow ...