C# 禁用DataGridView上的单元格事件

C# 禁用DataGridView上的单元格事件,c#,winforms,events,gridview,disable,C#,Winforms,Events,Gridview,Disable,我在表单上有一个DataGridView。我需要将其仅在查看模式下禁用,不突出显示选定行等。 带有图像的一列必须可以通过手动光标单击。 由于网格被禁用,CellClick一个“CellMouseEnter”事件没有触发 任何解决方案?首先,使用DataGridView设计器定义一些属性。 选择DataGridView,在其属性列表中,找到并打开编辑器。 我们需要将SelectionForeColor和SelectionBackColor设置为等于ForeColor和BackColor属性。这将防

我在表单上有一个
DataGridView
。我需要将其仅在查看模式下禁用,不突出显示选定行等。

带有图像的一列必须可以通过手动光标单击。
由于网格被禁用,
CellClick
一个“CellMouseEnter”事件没有触发


任何解决方案?

首先,使用
DataGridView
设计器定义一些属性。
选择
DataGridView
,在其属性列表中,找到并打开编辑器。

我们需要将
SelectionForeColor
SelectionBackColor
设置为等于
ForeColor
BackColor
属性。这将防止在选择时修改单元格颜色。
这里,我将
背景设置为
Color.White
,前景设置为
Color.Black
将其更改为您喜欢的任何颜色,只需两对颜色相同即可。

在设置了
DataGridView
DataSource
(或以其他方式插入数据行)之后,立即修改所有列的属性,如果需要,修改除显示图像的列之外的所有列的属性。在这里,我仅使用设置为列索引的
int
字段。
也可以通过检查每列的
[Cell].ValueType
来导出它。

//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;
    }
}
订阅网站和活动。
这些用于在鼠标指针进入包含图像的单元格时将光标更改为经典手形,并在离开单元格时将其重置为默认值。

这里,我订阅表单构造函数中的事件,但您也可以使用设计器通过
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; };
}

您是指标准的.Net
DataGridView
还是其他第三方控件?如果是标准控件,解决方案非常简单。您还应该提供所指结构的示例。您也没有指定语言。对不起,这是标准控件,C#。谢谢