本帖最后由 rockage 于 2017-1-17 00:09 编辑
方法1:
这个小功能原装的ListView控件原本就是支持的,即将属性HideSelection设置为False即可。
这样,在ListView失去焦点的时候,最后点击行仍然会以浅灰色标记出。
方法2:
方法1不太显眼,如果希望达到平时点击时那种高亮的效果,则需要做一些小改动,网上有很多这样的例子,
但是都很复杂,甚至动用了重绘。下面介绍这个方法则非常简单:
首先要将上面提到那个属性HideSelection设为True,否则仍然还是浅灰色。然后再设置一个全局变量:
然后在ListView的Click事件中添加:
然后修改两个事件GotFocus和LostFocus(即获取焦点和失去焦点)
逻辑简单明了,很好地解决了问题!
方法1:
这个小功能原装的ListView控件原本就是支持的,即将属性HideSelection设置为False即可。
这样,在ListView失去焦点的时候,最后点击行仍然会以浅灰色标记出。
方法2:
方法1不太显眼,如果希望达到平时点击时那种高亮的效果,则需要做一些小改动,网上有很多这样的例子,
但是都很复杂,甚至动用了重绘。下面介绍这个方法则非常简单:
首先要将上面提到那个属性HideSelection设为True,否则仍然还是浅灰色。然后再设置一个全局变量:
Private last_Selected_Item As New ListViewItem然后在ListView的Click事件中添加:
Private Sub ListView1_Click(sender As Object, e As EventArgs) Handles ListView1.Click
last_Selected_Item = ListView1.SelectedItems(0)
End Sub然后修改两个事件GotFocus和LostFocus(即获取焦点和失去焦点)
Private Sub ListView1_GotFocus(sender As Object, e As EventArgs) Handles ListView1.GotFocus
If IsNothing(last_Selected_Item) = False Then
last_Selected_Item.ForeColor = Color.Black
last_Selected_Item.BackColor = Color.White
End If
End Sub
Private Sub ListView1_LostFocus(sender As Object, e As EventArgs) Handles ListView1.LostFocus
If IsNothing(ListView1.SelectedIndices) <> True And
ListView1.SelectedIndices.Count > 0 Then
ListView1.SelectedItems(0).ForeColor = Color.White
ListView1.SelectedItems(0).BackColor = SystemColors.Highlight
End If
End Sub逻辑简单明了,很好地解决了问题!