如题

解决方案 »

  1.   

    好像KSYCODE中已经包括了所有的键了吧,还有这个必要么?
      

  2.   


        Char KeyCode='A';
        Keys TheKey = (Keys)Convert.ToInt32(KeyCode);    
      

  3.   

    e.KeyChar == (char)13
    回车的 把keycode 转换成char
      

  4.   

    什么情况下需要这样的转换呢?你需要手动触发KeyDown事件?
      

  5.   


    是这样的,因为2005winform程序有输入法半角变全角的bug,所以我就写了个组件,在keydown事件里把全角都转化为半角,因为keydown事件只有keycode,没有keychar,所以我又把keycode转化为string,再把string中的全角替换为半角,但我要让已经替换为半角的字符串生效啊,所以我要把它转回到keydown事件中的keycode,呵呵。
      

  6.   

    比较麻烦,如果那位有解决2005winform程序有输入法半角变全角的bug的高招,我也不用这么辛苦了
    网上说的2个解决方法我试验过,没用
    1. NDP20-KB925488-X86补丁不是正版用户无法安装的,所以没用。
    2.通过继承全角转半角类的方法,也没用。所以我只好自己写个组件。没用的 全角转半角类的定义
     public partial class IMEForm : Form
        {
            public IMEForm()
            {
                InitializeComponent();
            }
           
            //声明一些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;
            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);     //转换成半角   
                    }            }        }   
        }
      

  7.   

    string ss = "I";
    KeysConverter kc=new KeysConverter();
    Keys k = (Keys)kc.ConvertFromString(ss);
    if (k == Keys.I) MessageBox.Show("OK");