找回密码
 立即注册

QQ登录

只需一步,快速开始

qiuzhilv007

中级会员

34

主题

85

帖子

620

积分

中级会员

积分
620

活字格认证微信认证勋章

qiuzhilv007
中级会员   /  发表于:2015-12-7 14:26  /   查看:5360  /  回复:5
输入法设为日本字ひらがな后,输入一个数字,这时不按enter键,直接用鼠标点击其他cell,看到值已提交到单元格。
但在cellLeave事件中用value,formattedvalue,EditedFormattedValue均取不到输入的值。

5 个回复

倒序浏览
robert
金牌服务用户   /  发表于:2015-12-7 16:33:00
沙发
这应该是GcMultRow的一个限制。
能否把你要在CellLeave事件里做的事情告诉我,也许我可以提供回避问题的方法。
回复 使用道具 举报
qiuzhilv007
中级会员   /  发表于:2015-12-7 18:23:00
板凳
业务不同做的事也不同,都是单独的业务处理。现在这种情况下取不到输入的值
回复 使用道具 举报
robert
金牌服务用户   /  发表于:2015-12-8 08:53:00
地板
我的理解一般leave的时候获取值可能是要做校验逻辑。以下代码给你参考,也许对你有帮助。
  1.         private void GcMultiRow_CellParsing(object sender, CellParsingEventArgs e)
  2.         {
  3.             var editingValue = e.Value;
  4.             if(MyValidateLogic(editingValue) == false)  // 模拟校验逻辑
  5.             {
  6.                 MessageBox.Show("输入值非法!");
  7.                 e.Value = this.gcMultiRow.CurrentCell.Value; // 如果校验失败,报错并回滚数据。
  8.             }
  9.         }

  10.         public bool MyValidateLogic(object value)
  11.         {
  12.             if(object.Equals(value, "あ")) //这里可以写业务需要的校验逻辑
  13.             {
  14.                 return false;
  15.             }
  16.             return true;
  17.         }
复制代码


这段代码的核心思想就是用CellParsing事件替代Leave事件,在CellParsing里,e.Value可以取得用户输入法里未提交的值。也许这个信息对你有用。

评分

参与人数 1金币 +999 满意度 +5 收起 理由
qiuzhilv007 + 999 + 5 奖励金币

查看全部评分

回复 使用道具 举报
qiuzhilv007
中级会员   /  发表于:2015-12-8 13:45:00
5#
CellParsing事件确实可以取到输入的全角字符。谢谢提供思路
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2015-12-8 16:01:00
6#
回复 5楼qiuzhilv007的帖子

谢谢反馈。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部