C# 我可以限制用户选择DGV中的行吗

C# 我可以限制用户选择DGV中的行吗,c#,winforms,datagridview,C#,Winforms,Datagridview,我有一个winform程序,其中有两个DataGridView。它们是只读的,因此用户无法编辑这些值,并将选择模式设置为“整行” 我的程序一步一步地运行dgv,突出显示它正在处理的当前行。出于这个原因,我不希望用户能够单击一行并选择它。是否有一个设置我可以切换到,所以这对我来说 或者我必须使用SelectionChanged事件处理程序来检查选择是如何更改的,如果用户更改了选择,则恢复它吗?如果是这种情况,我的SelectionChanged事件处理程序如何判断选择是通过编程还是由用户更改的?您

我有一个winform程序,其中有两个DataGridView。它们是只读的,因此用户无法编辑这些值,并将选择模式设置为“整行”

我的程序一步一步地运行dgv,突出显示它正在处理的当前行。出于这个原因,我不希望用户能够单击一行并选择它。是否有一个设置我可以切换到,所以这对我来说


或者我必须使用SelectionChanged事件处理程序来检查选择是如何更改的,如果用户更改了选择,则恢复它吗?如果是这种情况,我的SelectionChanged事件处理程序如何判断选择是通过编程还是由用户更改的?

您可以将DGV的
Enabled
属性设置为false


这具有您想要的效果,并且DGV在未启用时没有“灰显”外观。您还可以通过编程方式设置DGV的选定行。

您可以将DGV的
启用属性设置为false


这具有您想要的效果,并且DGV在未启用时没有“灰显”外观。您还可以通过编程方式设置DGV的选定行。

如果要阻止用户选择任何行,应将控件的Enabled属性设置为false。这将阻止它接受鼠标事件。(即使控件已禁用,您也可以调整控件颜色使其“外观”处于启用状态。)

如果您希望有选择地阻止用户选择某些行,但允许他们选择其他行,那么您需要对DataGridView进行子类化并覆盖一些内容。(我认为没有任何DGV事件可以阻止行更改;SelectionChanged发生在选择更改之后,RowEnter不可取消。)


DGV上有一个名为SetSelectedRowCore的虚拟方法,它实际更新给定行的选定状态。如果重写此方法,则可以选择调用或不调用基SetSelectedRowCore(),以允许/不允许进行选择。

如果要阻止用户选择任何行,则应将控件的Enabled属性设置为false。这将阻止它接受鼠标事件。(即使控件已禁用,您也可以调整控件颜色使其“外观”处于启用状态。)

如果您希望有选择地阻止用户选择某些行,但允许他们选择其他行,那么您需要对DataGridView进行子类化并覆盖一些内容。(我认为没有任何DGV事件可以阻止行更改;SelectionChanged发生在选择更改之后,RowEnter不可取消。)


DGV上有一个名为SetSelectedRowCore的虚拟方法,它实际更新给定行的选定状态。如果重写此方法,则可以选择调用或不调用基SetSelectedRowCore(),以允许/不允许进行选择。

有一个名为“CanSelect”的属性


它似乎很有用。

有一个名为“CanSelect”的属性


它似乎很有用。

我只是想阻止选择所有行,所以我将“Enabled”设置为false。谢谢,我只是想阻止所有行的选择,所以我将把'Enabled'设置为false。ThanksIt似乎是一个只读属性,它只告诉您是否可以选择控件(如果控件不可见、未启用等)。它似乎是一个只读属性,它只告诉您是否可以选择控件(如果控件不可见、未启用等)