csharp:datagridview enter Half Width and Full Width characters

简介: /// <summary> /// 全角 /// </summary> /// <param name="unicodeString"></param> /// <returns></returns> public static string F
  /// <summary>

      /// 全角

      /// </summary>

      /// <param name="unicodeString"></param>

      /// <returns></returns>

      public static string FullWidthConvertor(string unicodeString)

      {

 

          StringBuilder sb = new StringBuilder(256);

          LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_FULLWIDTH, unicodeString, -1, sb, sb.Capacity);

          return sb.ToString();

 

      }

      /// <summary>

      /// 半角

      /// </summary>

      /// <param name="unicodeString"></param>

      /// <returns></returns>

      public static string HalfWidthConvertor(string unicodeString)

      {

 

          StringBuilder sb = new StringBuilder(256);

          LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_HALFWIDTH, unicodeString, -1, sb, sb.Capacity);

          return sb.ToString();

 

 

      }

      private const uint LCMAP_FULLWIDTH = 0x00800000;

      private const uint LOCALE_SYSTEM_DEFAULT = 0x0800;

      private const uint LCMAP_HALFWIDTH = 0x00400000;

 

      [DllImport("kernel32.dll", CharSet = CharSet.Unicode)]

      public static extern int LCMapString(uint Locale, uint dwMapFlags, string lpSrcStr, int cchSrc, StringBuilder lpDestStr, int cchDest);

 

 

 

/// <summary>

      /// DataGridView单位格输入全角转半角

      /// </summary>

      /// <param name="sender"></param>

      /// <param name="e"></param>

      private void dridViewRowNumberNo_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)

      {

          GridViewRowNumberNo dt = sender as GridViewRowNumberNo;

          //获取列序号

          int columnIndex = dt.CurrentCell.ColumnIndex;

          //单位格转化成文本框

          TextBox tb = e.Control as TextBox;

          //委托单位格KeyPress事务

          tb.KeyPress += new KeyPressEventHandler(geovindu_KeyPress);

      }

      /// <summary>

      /// 单位格KeyPress事务

      /// </summary>

      /// <param name="sender"></param>

      /// <param name="e"></param>

      private void geovindu_KeyPress(object sender, KeyPressEventArgs e)

      {

          Control ctl = sender as Control;

          if (ctl == null)

              return;

          if (ctl.ImeMode != ImeMode.Hangul)

              ctl.ImeMode = ImeMode.Hangul;

          //全角转半角

          if (e.KeyChar >= 65296 && e.KeyChar <= 65305)

          {

              e.KeyChar -= Convert.ToChar(65248);

          }

 

      }

目录
相关文章
|
自然语言处理 算法 机器人
工业控制编程语言入门
工业控制编程语言入门
|
前端开发 安全 关系型数据库
Flask的学生信息管理系统的设计与实现
Flask的学生信息管理系统的设计与实现
1277 0
|
Cloud Native IDE Go
Git与IDEA: 解决`dev`分支切换问题及其背后原因 为何在IDEA中无法切换到`dev`分支?全面解析!
Git与IDEA: 解决`dev`分支切换问题及其背后原因 为何在IDEA中无法切换到`dev`分支?全面解析!
539 0
|
存储 传感器 算法
【数字图像】数字图像锐化处理的奇妙之旅
【数字图像】数字图像锐化处理的奇妙之旅
211 1
|
人工智能 Java API
【Java 接口】接口(Interface)的定义,implements关键字,接口实现方法案例
【Java 接口】接口(Interface)的定义,implements关键字,接口实现方法案例
339 0
|
JavaScript 前端开发 Java
Vue CLI脚手架安装、搭建、配置 和 CLI项目分析
Vue CLI脚手架搭建和分析 详解。
385 0
|
开发者
【Magisk模块】全局高刷 锁定最高帧率
【Magisk模块】全局高刷 锁定最高帧率
2588 0
【Magisk模块】全局高刷 锁定最高帧率
|
SQL 缓存 搜索推荐
2022渗透测试-浏览器搜索技巧-信息收集之Google Hacking的使用
2022渗透测试-浏览器搜索技巧-信息收集之Google Hacking的使用
2022渗透测试-浏览器搜索技巧-信息收集之Google Hacking的使用
|
缓存 开发者
小技巧 - 如何下载微信公众号音频?(附:此方法可用于类似的Web)
小技巧 - 如何下载微信公众号音频?(附:此方法可用于类似的Web)
1691 0
小技巧 - 如何下载微信公众号音频?(附:此方法可用于类似的Web)