回复 5楼FBAccount的帖子
根据你的需求来看,有两种解决的思路,但都是利用CellFactory类。
第一种就是将C1FlexGrid的GridLine设置为None。然后重写CellFactory的CreateCellBorder方法,为除了特殊列的单元格画上Border。
另一种就是重写CellFactory的CreateCellBorder方法,将你所需要的列的单元格的border换成空。
步骤及代码参考:
Step 1: Define and Assign CellFactory
- public class MyCellFactory : C1.WPF.FlexGrid.CellFactory
- {
- List<C1.WPF.FlexGrid.CellRange> crw = new List<C1.WPF.FlexGrid.CellRange>();
- public MyCellFactory()
- {
- crw.Add(new C1.WPF.FlexGrid.CellRange(0,0));
- crw.Add(new C1.WPF.FlexGrid.CellRange(1,1));
- crw.Add(new C1.WPF.FlexGrid.CellRange(2,2));
- crw.Add(new C1.WPF.FlexGrid.CellRange(3,3));
- }
- public override Border CreateCellBorder(C1.WPF.FlexGrid.C1FlexGrid grid, C1.WPF.FlexGrid.CellType cellType, C1.WPF.FlexGrid.CellRange rng)
- {
- Border bdr = base.CreateCellBorder(grid, cellType, rng);
-
- if (cellType == C1.WPF.FlexGrid.CellType.Cell)
- if (crw.Contains(rng))
- {
-
- VisualBrush vb = new VisualBrush();
- vb.Visual = new Rectangle() { Height = 10, Width = 40, Stroke = new SolidColorBrush(Colors.Red), StrokeDashArray = new DoubleCollection() { 1.0 } };
- bdr.BorderBrush = vb;
- }
-
- return bdr;
- }
- }
复制代码
Step2: Assign CellFactory
- c1Flexgrid1.CellFactory = new MyCellFactory();
复制代码
希望这对解决问题有帮助,如果依然有问题,请联系我让我知道。 |