我有DataGridView
一个表格。我只需要在查看模式下禁用它,没有突出显示选定的行等。
带有图像的一列必须是可点击的,带有手形光标。
由于CellClick
网格被禁用,“CellMouseEnter”事件没有触发。
有什么解决办法吗?
我有DataGridView
一个表格。我只需要在查看模式下禁用它,没有突出显示选定的行等。
带有图像的一列必须是可点击的,带有手形光标。
由于CellClick
网格被禁用,“CellMouseEnter”事件没有触发。
有什么解决办法吗?
DataGridView
首先,使用Designer定义一些属性。
选择DataGridView
,在其属性列表中,找到DefaultCellStyle并打开编辑器。
我们需要将SelectionForeColor
and设置SelectionBackColor
为ForeColor
andBackColor
属性。这将防止在选择时修改单元格颜色。在这里,
我设置Color.White
为BackGround
和Color.Black
。
将其更改为您喜欢的任何内容,它们只需要对两对相同即可。ForeGround
在您设置完DataSource
(DataGridView
或以其他方式插入数据行)之后,修改所有列的只读属性,如果需要,修改除显示图像的列之外的所有列的冻结属性。在这里,我只是使用一个int
设置为列索引的字段。
它也可以通过检查[Cell].ValueType
每个 Column 来得出。
//Define which Column contains an Image
int ImageColumn = 2;
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
if (column.Index != ImageColumn)
{
column.Frozen = true;
column.ReadOnly = true;
}
}
订阅CellMouseEnter和CellMouseLeave事件。
这些用于在鼠标指针进入包含图像的单元格时将光标更改为经典的手形,并在离开时将其重置为默认值。
在这里,我订阅了表单构造函数中的事件,但您也可以通过DataGridView
控件的事件列表使用设计器生成的事件处理程序。
public form1()
{
InitializeComponent();
this.dataGridView1.CellMouseEnter += (s, e) =>
{ if (e.ColumnIndex == ImageColumn) dataGridView1.Cursor = Cursors.Hand; };
this.dataGridView1.CellMouseLeave += (s, e) =>
{ if (e.ColumnIndex == ImageColumn) dataGridView1.Cursor = Cursors.Default; };
}