禁用数据agridview中的行选择

我想禁用数据agridview中某些行的选择。

必须能够删除显示在winform中的数据agridview中的一个或多个数据agridview行的select属性。目标是用户不能选择某些行。(视情况而定)

Thankx,

请先 登录 后评论
本文连接: http://www.china-sunrider.com.cn/question/8354
source: https://stackoverflow.com/questions

1 个回答

szevvy

如果SelectionMode为FullRowSelect,则需要为DataGridView重写SetSelectedRowCore,而不是为不希望选中的行调用基本的SetSelectedRowCore。

如果SelectionMode不是FullRowSelect,您将需要另外覆盖SetSelectedCellCore(而不是对不希望被选中的行调用基本的SetSelectedCellCore),因为SetSelectedRowCore只在单击行标题而不是单个单元格时生效。

这里有一个例子:

public class MyDataGridView : DataGridView
{
    protected override void SetSelectedRowCore(int rowIndex, bool selected)
    {
        if (selected && WantRowSelection(rowIndex))
        {
            base.SetSelectedRowCore(rowIndex, selected);
        }
     }

     protected virtual void SetSelectedCellCore(int columnIndex, int rowIndex, bool selected)
     {
         if (selected && WantRowSelection(rowIndex))
         {
            base.SetSelectedRowCore(rowIndex, selected);
          }
     }

     bool WantRowSelection(int rowIndex)
     {
        //return true if you want the row to be selectable, false otherwise
     }
}

如果你正在使用WinForms,打开designer.cs找到相关的表单,改变DataGridView实例的声明来使用这个新类而不是DataGridView,同时替换this。blahblahblah =新的System.Windows.Forms.DataGridView()指向新的类。

请先 登录 后评论
user contributions licensed under CC BY-SA.