当鼠标悬停在listview项目上时,我正在尝试更改其背景颜色
我有一个鼠标悬停事件,但我如何在鼠标悬停在项目上时添加“高亮”效果?
private void pinnedAppsListBox_MouseHover(object sender, EventArgs e)
{
}发布于 2012-10-12 20:51:40
使用以下命令:
private void pinnedAppsListBox_MouseHover(object sender, EventArgs e){
Point point = pinnedAppsListBox.PointToClient(Cursor.Position);
int index = pinnedAppsListBox.IndexFromPoint(point);
if (index < 0) return;
//Do any action with the item
pinnedAppsListBox.GetItemRectangle(index).Inflate(1,2);
}发布于 2012-09-09 23:23:04
转到列表视图的ItemMouseHover事件并添加,然后设置项目的属性"BackColor“。
private void listView1_ItemMouseHover(object sender, ListViewItemMouseHoverEventArgs e)
{
e.Item.BackColor = Color.Black;
}发布于 2016-11-04 05:49:49
声明此全局变量
使用此Listview项目变量可跟踪悬停在哪个项目上
ListViewItem lvHoveredItem;设置以下函数以打开控件的DoubleBuffering,以防止闪烁:
public static void SetDoubleBuffering(System.Windows.Forms.Control control, bool value)
{
System.Reflection.PropertyInfo controlProperty = typeof(System.Windows.Forms.Control)
.GetProperty("DoubleBuffered", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
controlProperty.SetValue(control, value, null);
}在加载控件的位置调用此函数
SetDoubleBuffering(lvTaskList, true);然后在listview的mousemove事件中使用以下代码
private void lvTaskList_MouseMove(object sender, MouseEventArgs e)
{
//Set the Color you want the list Item to be when mouse is over
Color oItemColor = Color.Lavender;
Color oOriginalColor = Color.blue; //Your original color
//get the Item the Mouse is currently hover
ListViewItem lvCurrentItem = lvTaskList.GetItemAt(e.X, e.Y);
if ((lvCurrentItem != null) && (lvCurrentItem != lvHoveredItem))
{
lvCurrentItem.BackColor = oItemColor;
if(lvHoveredItem != null)
{
lvHoveredItem.BackColor = oOriginalColor ;
}
lvHoveredItem = lvCurrentItem;
return;
}
if (lvCurrentItem == null)
{
if (lvHoveredItem != null)
{
lvHoveredItem.BackColor = oOriginalColor;
}
}
}您还可以添加MouseLeave事件
private void lvTaskList_MouseLeave(object sender, EventArgs e)
{
Color oOriginalColor = Color.Blue; //Your original color
//When the mouse leave the control. If a ListViewItem was highlighted then set it's original color back
if (lvHoveredItem != null)
{
lvHoveredItem.BackColor = oOriginalColor ;
}
lvHoveredItem = null;
}https://stackoverflow.com/questions/12340135
复制相似问题