2012-06-06 35 views
1

有没有办法阻止用户在特定的dgvRow中选择单元格。
行是只读的,但仍然可以选择。c#winforms - 如何使DataGridViewRow UnSelectable?

+0

也许javascript阻止用户点击它......无论如何,这个决定背后的逻辑是什么?因为你知道,在互联网上发布的所有东西,无论你做什么,它都可以被复制和共享。如果您禁止用户单击(并复制和粘贴),用户仍然可以访问源代码并执行他/她想要的任何操作。 – walther

回答

2

您可以添加一个自定义委托,在选择更改时取消选择有问题的单元格。

DataGridView1.SelectionChanged += new EventHandler(DataGridView1_SelectionChanged); 
private void DataGridView1_SelectionChanged(object sender, EventArgs e){ 
    List<DataGridViewCell> toBeRemoved = new List<DataGridViewCell>(); 
    foreach(DataGridViewCell selectedCell in DataGridView1.SelectedCells){ 
     if (isCellUnSelectable(selectedCell)) 
      toBeRemoved.Add(selectedCell); 
    } 
    foreach(DataGridViewCell cell in toBeRemoved){ 
     cell.Selected = false; 
    } 
} 
+0

不能相信dgv没有这样的builtIn属性。 AnyWay,都感谢。 – Bonaca

+0

dgv无法创建此属性,因为dgv的内容是动态分配的,这意味着它在给定单元格上没有静态句柄。如果您尝试添加单元格并使其不可选,则必须围绕要删除的单元格设计dgv,并重新设计另一个类似的单元格,从而使单个单元格的可选属性无法跟踪。 –