【问题标题】:DataGridView CellMouseEnter detecting grey areaDataGridView CellMouseEnter 检测灰色区域
【发布时间】:2019-01-11 13:02:23
【问题描述】:

我正在尝试在 DataGridView 控件中模拟悬停事件,以在 DataGridViewImageColumn 悬停时显示 Cursor.Hand

我正在尝试这个(订阅CellMouseEnter

dgv_tabla.CellMouseEnter += dgv_tabla_Hover;

并检查RowIndex 是否不是-1

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;
    else
        dgv_tabla.Cursor = Cursors.Default;
}

问题是,当我悬停“删除”单元格并将鼠标向下移动(到“灰色区域”)时,Cursor.Hand 不会更改为Cursor.Default

图片更好理解:

有什么方法可以实现吗?

谢谢!

【问题讨论】:

  • 您可能需要对 mousemove 事件进行编码,并可能在那里进行一次命中测试。

标签: c# winforms user-interface datagridview cursor


【解决方案1】:

使用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;
}

【讨论】:

    【解决方案2】:

    另一种解决方案是使用 MouseMove 事件并在上面的 cmets 中执行 HitTest as suggested by 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;
    }
    

    【讨论】:

    • 谢谢,这正是我想要的!
    猜你喜欢
    • 1970-01-01
    • 2019-08-14
    • 2015-05-30
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多