仅在DataGridView

时间:2017-10-05 18:46:20

标签: c# winforms datagridview

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

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

for(int i=0; i<myDataGridView.RowCount; i++){
    myDataGridView.Cursor = Cursors.Hand;
}

不能做我想要的,因为鼠标指针在DataGridView上的任何地方变成手形光标,而不是只在Remove列上。 我试过像

这样的东西
for(int i=0; i<myDataGridView.RowCount; i++){
    myDataGridView.Columns["Remove"].Cursor = Cursors.Hand;
}

但这会出错:

  

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

有没有什么好方法可以达到这个目的?谢谢。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

使用此代码,对我有用

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