目前的状态是,是否锁定根据左上角的”锁定“图标来判断。你说的这种不太好实现。主要也不是常规做法。下面提供一个实现的方法,主要是通过表格的OwnerDrawCell事件去实现。需要说明的一点时,如果系统中OwnerDrawCell事件代码写的多了,会影响表格性能的。自己平衡一下。
实现原理:如果想在所有表格或绝大多数表格中使用此效果,可以将事件代码放到全局事件中,然后再在对应的表中添加样式并启用全局表事件。
实现步骤如下:
第一步:在全局表事件中添加如下代码:
- Public Sub OwnerDrawCell(sender As Object, e As C1.Win.C1FlexGrid.OwnerDrawCellEventArgs)
- Dim tbl As BaseGrid = CType(sender, BaseGrid)
- If Not tbl.AllowEdit Then
- If e.Row >= tbl.Cols.Fixed AndAlso e.Col >= tbl.Rows.Fixed Then
- e.Style = tbl.Styles("DisabledStyle")
- End If
- End If
- End Sub
复制代码
C#版本的代码为
- public void OwnerDrawCell(object sender, C1.Win.C1FlexGrid.OwnerDrawCellEventArgs e)
- {
- BaseGrid tbl=sender as BaseGrid;
- if(!tbl.AllowEdit)
- {
- if(e.Row>=tbl.Cols.Fixed && e.Col>=tbl.Rows.Fixed)
- {
- e.Style=tbl.Styles["DisabledStyle"];
- }
- }
- }
复制代码
第二步:在想实现效果的表属性中添加自定义样式效果。每个表中都要添加样式,如果省掉此步骤,可以考虑用代码替代。
代码添加样式可以考虑参考:[size=11.3333px]http://www.sanmugrid.com/help/index.htm?page=00554%E6%A0%B7%E5%BC%8F.htm
只要在第一步使用tbl.Styles["DisabledStyle"]之前先判断一下tbl.Styles是否包含”DisabledStyle“样式,如果不包含就添加一下。
第三步:在表事件中添加相应的全局事件OwnerDrawCell
|