0

텍스트 상자를 클릭하면 가상 키보드를 표시하려고합니다. 모든 아이디어 내 애플 리케이션에 가상 키보드를 구현하는 방법? 이 코드는 아무 것도 수행하지 않습니다.WinCE ARM 입력 가상 키보드

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

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

'사용'은 컨트롤이 이벤트에 응답하는 경우에만 토글합니다. 어쩌면 당신은'Visible' 속성을 원할까요? – jnovacho

+0

실제 이벤트 처리기가 이벤트에 첨부되어 있습니까? 아니면 [코드 붙여 넣기]입니까? (http://msdn.microsoft.com/en-us/library/microsoft.windowsce.forms.inputpanel.aspx)? – GSerg

+0

나는 단지 코드를 붙이지 만, 이제 이벤트에 첨부했다. 그러나 1 초 동안 만 보여주고 닫기보다 – franzp

답변

1

제거 된 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);   
    }