找回密码
 立即注册

QQ登录

只需一步,快速开始

jplzj
论坛元老   /  发表于:2013-11-23 20:25  /   查看:5067  /  回复:3
NumberCellType类型单元格,如何在全角状态下输入的变为半角输入?

3 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-11-25 17:51:00
沙发
jplzj

这个需求可以参考这个帖子:http://gcdn.grapecity.com/showtopic-8298.html
回复 使用道具 举报
jplzj
论坛元老   /  发表于:2013-11-28 20:01:00
板凳
没有试验成功
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-29 10:22:00
地板
回复 3楼jplzj的帖子

在我这边测试正常,主要是以下方法启作用:

  1.         private void fpSpread1_EditModeOff(object sender, EventArgs e)
  2.         {
  3.             FarPoint.Win.Spread.CellType.RegularExpressionCellType editor = this.fpSpread1.Sheets[0].GetEditor(0, 0) as FarPoint.Win.Spread.CellType.RegularExpressionCellType;
  4.             string text = ToDBC(this.fpSpread1.EditingControl.Text);
  5.             this.fpSpread1.Sheets[0].ActiveCell.Text = text;
  6.         }

  7.         // /全角空格为12288,半角空格为32
  8.         // /其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
  9.         public static String ToDBC(String input)
  10.         {
  11.             char[] c = input.ToCharArray();
  12.             for (int i = 0; i < c.Length; i++)
  13.             {
  14.                 if (c[i] == 12288)
  15.                 {
  16.                     c[i] = (char)32;
  17.                     continue;
  18.                 }
  19.                 if (c[i] > 65280 &amp;&amp; c[i] < 65375)
  20.                     c[i] = (char)(c[i] - 65248);
  21.             }
  22.             return new String(c);
  23.         }
复制代码


为什么要把 全角转换为半角?Spread 7.0 可以自动切换全角半角输入:
  1. this.fpSpread1.ImeMode = System.Windows.Forms.ImeMode.OnHalf;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部