C# WinCE ARM输入虚拟键盘

C# WinCE ARM输入虚拟键盘,c#,compact-framework,windows-ce,inputstream,keyboard-events,C#,Compact Framework,Windows Ce,Inputstream,Keyboard Events,我想在单击文本框时显示虚拟键盘。如何在我的应用程序中实现虚拟键盘? 这段代码什么都不做 private void textBox1_GotFocus(object sender, EventArgs e) { inputPanel1.Enabled = true; } private void textBox1_LostFocus(object sender, EventArgs e) { inputPanel1.Enab

我想在单击文本框时显示虚拟键盘。如何在我的应用程序中实现虚拟键盘? 这段代码什么都不做

    private void textBox1_GotFocus(object sender, EventArgs e)
    {
        inputPanel1.Enabled = true;
    }

    private void textBox1_LostFocus(object sender, EventArgs e)
    {
        inputPanel1.Enabled = false;
    }

LostFocus处理程序删除帮助

然后我不得不改变键盘的位置。这是唯一的方法,因为不存在属性:/。。也许它会对某些人有用

    [DllImport("coredll.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool SipGetInfo(
        ref SIPINFO sipInfo);

    [DllImport("coredll.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    public static extern bool SipSetInfo(
        ref SIPINFO sipInfo);
    [StructLayout(LayoutKind.Sequential)]

    public struct SIPINFO
    {
        public uint cbSize;
        public uint fdwFlags;
        public RECT rcVisibleDesktop;
        public RECT rcSipRect;
        public uint dwImDataSize;
        public IntPtr pvImData;
    }

    [StructLayout(LayoutKind.Sequential)]
    public struct RECT
    {
        public int left;
        public int top;
        public int right;
        public int bottom;
    }

    private void ShowInputPanel(Control control)
    {
        InputPanel.SIPINFO sipInfo;
        var x = 100;
        var y = control.PointToScreen(new Point(110, 150)).Y;            //control.Height

        this.inputPanel1.Enabled = true;

        sipInfo = new InputPanel.SIPINFO();
        sipInfo.cbSize = (uint)Marshal.SizeOf(sipInfo);
        if (InputPanel.SipGetInfo(ref sipInfo))
        {
            sipInfo.rcSipRect.left = x;
            sipInfo.rcSipRect.top = y;

            InputPanel.SipSetInfo(ref sipInfo);
        }
    }

    private void textBox1_GotFocus(object sender, EventArgs e)
    {
        this.ShowInputPanel(this.textBox1);        
    }

Enabled
仅在控件响应事件时切换。也许你想要
Visible
property?那些实际的事件处理程序是附加到事件的,还是你只是?我只是粘贴了代码,但现在我把这些附加到了事件上,但它只显示了一秒钟甚至更长的时间close@franzp尝试删除
LostFocus
处理程序。@franzp启用键盘可能会使文本框暂时失去焦点。