/// <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); } }