我可以限制用户在DGV中选择行

时间:2011-04-14 20:39:46

标签: c# winforms datagridview

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

我的程序一次一步地遍历dgv,突出显示它正在处理的当前行。出于这个原因,我不希望用户能够点击一行并选择它。我可以切换到这样的设置吗?

或者我必须使用SelectionChanged事件处理程序来检查选择的更改方式,并在用户更改选择时将其还原?如果是这种情况,我的SelectionChanged事件处理程序如何判断选择是以编程方式还是由用户更改?

3 个答案:

答案 0 :(得分:3)

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

如果您想有选择地阻止用户选择某些行但允许他们选择其他行,那么您需要继承DataGridView并覆盖一些内容。 (我认为没有任何DGV事件可以阻止行更改;选择更改后,选项更改后会发生>,并且RowEnter不可取消。)

在DGV上有一个名为SetSelectedRowCore的虚方法,它可以实际更新给定行的选定状态。如果覆盖此方法,您可以选择调用或不调用基本SetSelectedRowCore()以允许/不允许选择发生。

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

有一个名为“CanSelect”的属性..

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.canselect.aspx

似乎很有用..