为了账号安全,请及时绑定邮箱和手机立即绑定

DataGridView CellMouseEnter 检测灰色区域

DataGridView CellMouseEnter 检测灰色区域

C#
慕森卡 2021-11-14 15:44:07
我试图在模仿悬停事件DataGridView控件显示一个Cursor.Hand当DataGridViewImageColumn一直徘徊我正在尝试这个(订阅CellMouseEnter)dgv_tabla.CellMouseEnter += dgv_tabla_Hover;并检查是否RowIndex不是 -1private void dgv_tabla_Hover(object sender, DataGridViewCellEventArgs e){    //The index of the column where i want to show Cursor.Hand    var index = dgv_tabla.Columns["Remove"].Index;    if (e.ColumnIndex == index && e.RowIndex >= 0)        dgv_tabla.Cursor = Cursors.Hand;    else        dgv_tabla.Cursor = Cursors.Default;}问题是,当我将鼠标悬停在“删除”单元格并向下移动鼠标(到“灰色区域”)时,Cursor.Hand不要更改为Cursor.Default更好理解的图像:有什么方法可以实现这一目标吗?
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

另一种解决方案是使用该MouseMove事件并HitTest 按照 TaW在上述评论中的建议进行操作。在这种情况下,您的代码将如下所示:


dgv_tabla.MouseMove += Dgv_tabla_MouseMove;



private void Dgv_tabla_MouseMove(object sender, MouseEventArgs e)

{

    int index = dgv_tabla.Columns["Remove"].Index;


    DataGridView.HitTestInfo info = dgv_tabla.HitTest(e.X, e.Y);

    if (info.ColumnIndex == index && info.RowIndex >= 0)

        dgv_tabla.Cursor = Cursors.Hand;

    else

        dgv_tabla.Cursor = Cursors.Default;

}


查看完整回答
反对 回复 2021-11-14
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

使用该CellMouseLeave事件将光标重置为默认值。在这种情况下,您不需要else分支:


dgv_tabla.CellMouseEnter += dgv_tabla_Hover;

dgv_tabla.CellMouseLeave += dgv_tabla_CellMouseLeave;


private void dgv_tabla_Hover(object sender, DataGridViewCellEventArgs e)

{

    //The index of the column where i want to show Cursor.Hand

    var index = dgv_tabla.Columns["Remove"].Index;


    if (e.ColumnIndex == index && e.RowIndex >= 0)

        dgv_tabla.Cursor = Cursors.Hand;

}


private void dgv_tabla_CellMouseLeave(object sender, DataGridViewCellEventArgs e)

{

    dgv_tabla.Cursor = Cursors.Default;

}


查看完整回答
反对 回复 2021-11-14
  • 2 回答
  • 0 关注
  • 237 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信