这么骚的操作你确定要做?这个功能应该很耗系统资源,我觉得没有必要。
非要搞的话,可以参考下面的代码,在MouseMove事件写代码,注意要添加一个m_lastRow私有字段。
- Private m_lastRow As Integer=-1
- Public Sub MouseMove(sender As Object,e As System.Windows.Forms.MouseEventArgs)
- Dim tbl As BaseGrid=sender
- '获得HitTestInfo结构
- Dim hit As HitTestInfo= tbl.HitTest(e.X,e.Y)
- If hit.Row>=tbl.Rows.Fixed AndAlso hit.Row<>m_lastRow Then
- '清空之前行的样式
- If m_lastRow>0 AndAlso m_lastRow<tbl.Rows.Count-IIF(tbl.Footers.Fixed,1,0) Then '如果属于正常行序号
- If TypeOf tbl Is SmEditTreeGrid Then
- tbl.Rows(m_lastRow).Style=Nothing
- Else
- If tbl.Rows(m_lastRow).IsNode Then
- tbl.Rows(m_lastRow).Style=tbl.Styles("Subtotal" & tbl.Rows(m_lastRow).Node.Level)
- Else
- tbl.Rows(m_lastRow).Style=Nothing
- End If
- End If
- End If
-
- '设置新行的样式,也可以直接设置一个自己自定义的样式
- tbl.Rows(hit.Row).Style=tbl.StyleCurrentLine
- '保存一下作用过的行
- m_lastRow=hit.Row
- End If
- End Sub
复制代码
|