NickYau 发表于 2020-6-5 10:12:11

锁定某列不可编辑问题

你好,请问SpreadSheet表格控件是否可以锁定某列不可编辑(注:只锁定指定的列,其它列可以编辑)

Richard.Ma 发表于 2020-6-5 10:12:12

目前WPF在锁定后确实没有办法调整行列宽高

可以用另外一种办法来禁止编辑,通过在EditStarting事件中添加如下代码,即可禁用第一列的编辑

void Spread_EditStarting(object sender, GrapeCity.Windows.SpreadSheet.UI.EditCellStartingEventArgs e)
{
    if (e.Column == 0)
      e.Cancel = true;
}

Richard.Ma 发表于 2020-6-5 11:35:24

通过设置sheet 的Protect 属性,可以阻止编辑已经锁定的单元格,然后将该行锁定即可
            fpSpread2.ActiveSheet.Protect = true;

            fpSpread2.ActiveSheet.LockBackColor = Color.LightCyan;

            fpSpread2.ActiveSheet.LockForeColor = Color.Green;
            fpSpread2.ActiveSheet.Columns.Locked = true;

NickYau 发表于 2020-6-5 11:38:19

Richard.Ma 发表于 2020-6-5 11:35
通过设置sheet 的Protect 属性,可以阻止编辑已经锁定的单元格,然后将该行锁定即可

代码已经试过了,这个是整个页不可编辑,我们想要的是指定列不可编辑,其他列还可编辑

NickYau 发表于 2020-6-5 11:40:25

Richard.Ma 发表于 2020-6-5 11:35
通过设置sheet 的Protect 属性,可以阻止编辑已经锁定的单元格,然后将该行锁定即可

而且ActiveSheet是没有LockBackColor属性和方法

Richard.Ma 发表于 2020-6-5 15:17:35

本帖最后由 Richard.Ma 于 2020-6-5 15:29 编辑

不好意思,需要先将sheet整体默认的locked属性先设置为false,具体我验证一下如何设置然后回复你
或者将其他列的Locked设为false也行,但是这样比较麻烦,而且新增列可能也会有问题


NickYau 发表于 2020-6-5 17:48:35

Richard.Ma 发表于 2020-6-5 15:17
不好意思,需要先将sheet整体默认的locked属性先设置为false,具体我验证一下如何设置然后回复你
或者将其 ...

好的,等待您的回复

Richard.Ma 发表于 2020-6-8 09:28:05

设置DefaultStyle.Locked = false后虽然可以让整个文档解除锁定,但是后面设置单列所动会失效,

因此目前建议还是对所有列单独设置,按照需要设置是否锁定
            spread1.ActiveSheet.Columns.Locked = true;
            spread1.ActiveSheet.Columns.Locked = false;

NickYau 发表于 2020-6-9 09:26:44

Richard.Ma 发表于 2020-6-8 09:28
设置DefaultStyle.Locked = false后虽然可以让整个文档解除锁定,但是后面设置单列所动会失效,

因此目 ...

好的,我先尝试一下

Richard.Ma 发表于 2020-6-9 09:39:02

好的
页: [1] 2
查看完整版本: 锁定某列不可编辑问题