2013-12-16 37 views
1

我們目前正在將一個PDA應用程序從.NET Compact Framework 1.1遷移到.NET Compact Framework 3.5。
安裝了操作系統Windows 6.0和6.5的PDA。Windows .NET Compact Framework 3.5失去焦點事件無法正常工作

got_focus事件自定義文本框的,我們下面的代碼寫

enter code here 
private void tbCustom_GotFocus(object sender, EventArgs e) 
{ 
    m_Keypad.SetBuffer(tbMileage.Text); 
    m_Keypad.HideOSKeyPad(); 
    m_Keypad.Show(); 
    this.m_ToolBarButtonNumericKeypad.ImageIndex = 11; 
    tbCustom.Focus(); 
} 

它在.NET CF 1.1工作正常,但同時,我們把這段代碼轉換成3.5在不改變任何代碼它剛剛進入遞歸和applcaiton有崩潰。請爲此提供幫助。提前致謝。

回答

0

有幾個PInvoke的metth的ods用於打開自定義鍵盤窗口而不用關注它。這個API工作在CF1.0,但它不適用於.NET CF3.5以下是正確的一個.NET CF3.5

[DllImport("coredll.dll", SetLastError = true)] 
private static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong); 
[DllImport("coredll.dll", SetLastError = true)] 
private static extern int GetWindowLong(IntPtr hWnd, int nIndex); 
0

Woooow ... GotFocus發生在控件接收(=有)焦點時,而不是焦點時。 而在你的方法中,你最終關注的是引發這個事件的控件=>循環!

tbCustom集中=>你的代碼運行,並將其焦點設置到tbCustom =>你的代碼運行...

從你的方法刪除此行:

tbCustom.Focus(); 

文件有關的GotFocus:http://msdn.microsoft.com/fr-fr/library/system.windows.forms.control.gotfocus(v=vs.110).aspx

+0

感謝您的回覆尼科爾!但是這不是解決方案,因爲我可以在文本框的焦點上打開自定義小鍵盤,然後我的焦點應該放在文本框中,以便我可以直接將該值放入該文本框中。不過,我以其他方式得到了相同的解決方案 – user3107750

+0

好的,也許你可以先說你的自定義鍵盤;) 編輯你的問題與其他用戶的答案。 –

0

什麼:

private void tbCustom_GotFocus(object sender, EventArgs e) 
{ 
    if (m_Keypad.Visible == false) 
    { 
     m_Keypad.SetBuffer(tbMileage.Text); 
     m_Keypad.HideOSKeyPad(); 
     m_Keypad.Show(); 
     this.m_ToolBarButtonNumericKeypad.ImageIndex = 11; 
     tbCustom.Focus(); 
    } 
} 
相關問題