xuxs 发表于 2014-6-24 17:28:00

【WinForms】C1FlexGrd如何屏蔽系统热键

我发现C1FlexGrd处于编辑状态下,如果按下shift+enter键后是清楚单元格中的内容
现在我需要屏蔽掉这个功能,同时shift+enter键还要实现别的功能
请问版主有什么办法吗

Alice 发表于 2014-6-25 13:24:00

回复 1楼xuxs的帖子

C1FlexGrid提供了KeyDownEdit和KeyUpEdit事件,在编辑状态下按下键的时候会触发這两个事件。

我使用KeyDownEdit事件来处理,当按下shift+enter键的时候,不去删除内容。代码如下:
void c1FlexGrid1_KeyDownEdit(object sender, KeyEditEventArgs e)
      {
            if (e.Shift && e.KeyCode == Keys.Enter)
            {
                e.Handled = true;
                //自定义需要实现的功能
                DoAction();
            }
      }

这样子实现后出现了一个新问题:在编辑状态下获取C1FlexGrid.Editor.Text是有值的,但这个值显示不出来。
这个新问题我作为Bug处理中。若你有更好的解决方法,希望不吝赐教。

xuxs 发表于 2014-6-25 16:21:00

单纯屏蔽掉shift+enter是没有问题的,我也可以让值仍然显示出来,方法是重载windows的processCmdKey方法,在该方法中截获shift+enter消息即可,但是现在我面临的问题是,我们的需求要求shift+enter要实现其他的功能,同时还不能删除editor中的值。
如果从写processCmdKey方法,键盘消息就阻塞掉了(就像hook),因此是对shift+enter键的绝对屏蔽
贵公司的Spread组件就有专门的属性来对热键进行控制的,不知道C1的产品是否有类似的功能呢

Alice 发表于 2014-6-25 16:56:00

回复 3楼xuxs的帖子

你说的问题我理解了,但C1没有和Spread类似的方法,对热键进行修改。
你的需求我记录下来反馈到产品组,需要大约2-3天能收到回复。
如果有进一步的消息,我再和你联系。

Alice 发表于 2015-6-26 15:43:00

回复 3楼xuxs的帖子

很抱歉,3楼提到的功能暂不提供。
页: [1]
查看完整版本: 【WinForms】C1FlexGrd如何屏蔽系统热键