csharp:datagridview enter Half Width and Full Width characters

来源:互联网 发布:工程宝软件使用说明 编辑:程序博客网 时间:2024/05/29 15:43
  /// <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);          }       }

0 0
原创粉丝点击