在DataGridView的单元格中如何控制用户的输入法不是全角?

「已注销」 2009-03-06 10:41:31
如题,多谢各位兄弟了,呵呵!
...全文
493 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jingfengshan 2009-07-07
  • 打赏
  • 举报
回复
打补丁 kb925488-x86
悔说话的哑巴 2009-03-06
  • 打赏
  • 举报
回复
我也收藏
lxf2000104 2009-03-06
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
设置IMEMODE不行吗
tandry 2009-03-06
  • 打赏
  • 举报
回复
如果你的版本是2.0 Sp1 则可以设置ImeMode属性为OnHalf.否则就必须使用windows的API函数。
relive_qiankai 2009-03-06
  • 打赏
  • 举报
回复
学习了!
「已注销」 2009-03-06
  • 打赏
  • 举报
回复
有没有简单点的方法啊?
blestcc 2009-03-06
  • 打赏
  • 举报
回复
學習了,收藏
surlew 2009-03-06
  • 打赏
  • 举报
回复
我的方法是写一个

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Collections;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace KySoft
{
public class ImeForm : System.Windows.Forms.Form
{
//声明一些API函数
[DllImport("imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hwnd);
[DllImport("imm32.dll")]
public static extern bool ImmGetOpenStatus(IntPtr himc);
[DllImport("imm32.dll")]
public static extern bool ImmSetOpenStatus(IntPtr himc, bool b);
[DllImport("imm32.dll")]
public static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref int lpdw2);
[DllImport("imm32.dll")]
public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey);
private const int IME_CMODE_FULLSHAPE = 0x8;
private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;
//重载Form的OnActivated
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
IntPtr HIme = ImmGetContext(this.Handle);
if (ImmGetOpenStatus(HIme)) //如果输入法处于打开状态
{
int iMode = 0;
int iSentence = 0;
bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence); //检索输入法信息
if (bSuccess)
{
if ((iMode & IME_CMODE_FULLSHAPE) > 0) //如果是全角
ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE); //转换成半角
}

}
}

}
}



然后在自己要用的界面
public partial class frmMain : ImeForm
这样
Teng_s2000 2009-03-06
  • 打赏
  • 举报
回复
进行下判断

public static bool Is全角(char c)
{
if (System.Text.Encoding.Default.GetByteCount(c.ToString()) == 2)
return true;
else
return false;
}
zgke 2009-03-06
  • 打赏
  • 举报
回复
你可能需要安装MS输入法的补丁...

或则在你有GRIDVIEW的窗体里加


//声明一些API函数
[DllImport("imm32.dll")]
public static extern IntPtr ImmGetContext(IntPtr hwnd);
[DllImport("imm32.dll")]
public static extern bool ImmGetOpenStatus(IntPtr himc);
[DllImport("imm32.dll")]
public static extern bool ImmSetOpenStatus(IntPtr himc, bool b);
[DllImport("imm32.dll")]
public static extern bool ImmGetConversionStatus(IntPtr himc, ref int lpdw, ref int lpdw2);
[DllImport("imm32.dll")]
public static extern int ImmSimulateHotKey(IntPtr hwnd, int lngHotkey);
private const int IME_CMODE_FULLSHAPE = 0x8;
private const int IME_CHOTKEY_SHAPE_TOGGLE = 0x11;
//重载Form的OnActivated
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
IntPtr HIme = ImmGetContext(this.Handle);
if (ImmGetOpenStatus(HIme)) //如果输入法处于打开状态
{
int iMode = 0;
int iSentence = 0;
bool bSuccess = ImmGetConversionStatus(HIme, ref iMode, ref iSentence); //检索输入法信息
if (bSuccess)
{
if ((iMode & IME_CMODE_FULLSHAPE) > 0) //如果是全角
ImmSimulateHotKey(this.Handle, IME_CHOTKEY_SHAPE_TOGGLE); //转换成半角
}


}
}
the_pain 2009-03-06
  • 打赏
  • 举报
回复
up

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧