找回密码
 立即注册

QQ登录

只需一步,快速开始

13818435845

注册会员

5

主题

18

帖子

53

积分

注册会员

积分
53

[已处理] CellChange事件

13818435845
注册会员   /  发表于:2017-2-9 15:27  /   查看:3829  /  回复:5
设置canfocus属性时,也触发该事件,能不能不让他触发,或者不执行事件里面的函数

5 个回复

倒序浏览
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-2-9 17:15:07
沙发
您可以根据您的业务判断下是否需要执行事件里的代码。
或者在设置是定义一个变量,如果变量为true就不执行
回复 使用道具 举报
13818435845
注册会员   /  发表于:2017-2-9 17:29:57
板凳
我怎么他是因为设置canfoucs属性而引起变化触发事件的
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-2-9 17:42:30
地板
您发下您现在的代码,您canfoucs给什么属性设置的,目的是什么
回复 使用道具 举报
13818435845
注册会员   /  发表于:2017-2-10 16:17:13
5#
dexteryao 发表于 2017-2-9 17:42
您发下您现在的代码,您canfoucs给什么属性设置的,目的是什么

for (int i = 0; i < fpSpread1.ActiveSheet.RowCount; i++)
            {
                for (int j = 0; j < fpSpread1.ActiveSheet.ColumnCount; j++)
                {
                    if (fpSpread1.ActiveSheet.Cells[i, j].Locked.Equals(false))
                    {
                        // fpSpread1.ActiveSheet.Cells[i, j].BackColor = System.Drawing.Color.FromArgb(((System.Byte)(198)), ((System.Byte)(226)), ((System.Byte)(255)));
                    }
                    else
                    {
                        //fpSpread1.ActiveSheet.Cells[i, j].BackColor = this.BackColor;
                        fpSpread1.ActiveSheet.Cells[i, j].CanFocus = false;
                    }
                    if (this.fpSpread1.ActiveSheet.Cells[i, j].Locked.Equals(false) && flag)//聚焦第一个单元格
                    {
                        this.fpSpread1.ActiveSheet.SetActiveCell(i, j);
                        flag = false;
                    }
                }
            }
我是想设置lock为false时,就可以聚焦,光标导航时就在可填写的格子内导航,然而设置canfoucs属性时,就触发了,然后就很耗时。
回复 使用道具 举报
dexteryao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2017-2-10 17:51:52
10#
您在坐批量处理前先 取消掉事件,处理后再加上

fpSpread1.ActiveSheet.CellChanged -= ActiveSheet_CellChanged;
。。。。。
fpSpread1.ActiveSheet.CellChanged += ActiveSheet_CellChanged;

或者批量处理前设置一个全局的flag
isSetting = true
for{}
isSetting = false

        private void ActiveSheet_CellChanged(object sender, FarPoint.Win.Spread.SheetViewEventArgs e)
        {
if(isSetting) return;
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部