找回密码
 立即注册

QQ登录

只需一步,快速开始

huzhongwen

初级会员

50

主题

92

帖子

326

积分

初级会员

积分
326
huzhongwen
初级会员   /  发表于:2023-10-18 10:37  /   查看:972  /  回复:3


我用的是winform版控件

C1FlexGrid中单元格输入中文括号能否自动变为英文括号?




有没有相关的事件,在我输入中文括号的时候,输入过程中,自动切换为英文括号?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

3 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-10-18 14:03:52
沙发
输入过程中很麻烦,这个编辑器不好获取和控制,建议你在AfterEdit 事件里来直接修改单元格值


  1.             c1FlexGrid4.AfterEdit += (s, e) => {
  2.                 var value = c1FlexGrid4[e.Row, e.Col];
  3.                 if(value is string)
  4.                 {
  5.                     c1FlexGrid4[e.Row, e.Col] = (value as string).Replace("(", "(").Replace(")", ")");
  6.                 }
  7.             };
复制代码
回复 使用道具 举报
一路向东
注册会员   /  发表于:2023-10-20 13:54:12
板凳
本帖最后由 一路向东 于 2023-10-20 14:03 编辑

如果一定要在输入时替换,那就在初始化的时候,把列的Editor(其实就是一个TextBox)的KeyDown或者KeyPress事件绑定到处理方法,除此之外你还需要处理粘贴时的数据。所以版主的AfterEdit事件处理是最简单的,代码如下
  1. Dim grid = New THT5FlexGrid

  2. AddHandler grid.Cols(1).Editor.KeyPress, Sub(send, e)
  3.                                              Select Case e.KeyChar
  4.                                                  Case "("
  5.                                                      e.KeyChar = "("
  6.                                                  Case ")"
  7.                                                      e.KeyChar = ")"
  8.                                              End Select
  9.                                          End Sub
复制代码

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-10-20 14:08:47
地板
是的,主要是要在editor中处理的话,你可能还需要考虑是否设置了其他的自定义编辑器(比如combobox等等),TextBox只是默认的编辑器类型

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部