仅在 DataGridView 的某一列上使用手形光标

Mik*_*nes 3 c# datagridview winforms

我正在用 C# 编写一个表单应用程序,我有一个 DataGridView,它显示来自 SQL 服务器的数据。这些数据包含一个名为的Remove列,该列的所有行都包含字符串Remove。现在我想通过更改背景颜色并使用手形光标使该列的所有单元格看起来像一个按钮。

我的问题是,我不能仅在此列上使用手形光标。我想要的是,当鼠标悬停在该Remove列的任何行上时,将鼠标指针更改为手形光标,而不是其他任何地方。

for(int i=0; i<myDataGridView.RowCount; i++){
    myDataGridView.Cursor = Cursors.Hand;
}
Run Code Online (Sandbox Code Playgroud)

没有做我想要的,因为鼠标指针变成了 DataGridView 上任何地方的手形光标,而不仅仅是Remove列上。我试过类似的东西

for(int i=0; i<myDataGridView.RowCount; i++){
    myDataGridView.Columns["Remove"].Cursor = Cursors.Hand;
}
Run Code Online (Sandbox Code Playgroud)

但这给出了一个错误:

System.Windows.Forms.DataGridViewColumn 不包含“光标”的定义。

有什么好的方法可以实现这一目标吗?谢谢你。

小智 8

使用这个代码,它对我有用

    private void dataGridView1_CellMouseEnter(object sender, DataGridViewCellEventArgs e)
        {
            string colname = dataGridView1.Columns[e.ColumnIndex].Name;
           if(colname!="btnEdit" && colname!= "btnDelete")
            {
                dataGridView1.Cursor = Cursors.Default;
            }
            else
            {
                dataGridView1.Cursor = Cursors.Hand;
            }
        }
Run Code Online (Sandbox Code Playgroud)


小智 7

尝试点击 DataGridView 的 OnCellMouseEnter 事件。事件触发后,您可以确定单元格所在的列并根据需要更改光标。