2013-09-30 35 views
1

我正在開發用於與WM 6.5(.NET 3.5)的移動設備的應用程序,並具有以下的問題:.NET CompactFramework TextBox.selectAll上的GotFocus

當textBox.gotFocus()事件被稱爲上在我的表單中的一個文本框,我調用這個文本框的SelectAll()方法來選擇整個文本。

此方法適用於Tab導航(selectNextControl())的情況,但不適用於在設備顯示屏上「觸摸」此文本框的情況。 在這種情況下,將執行selectAll()方法,但未選中文本。

有沒有人有這方面的經驗? 在此先感謝

+0

我的猜測(和它只是一個猜測)是,當你在文本框挖掘存在的GotFocus事件後,通過點擊事件。在處理GotFocus時,選擇所有文本,但Click事件的系統行爲是取消選擇文本。 – ColinM

+0

這很有可能。但問題是,在文本框中沒有CF的OnClick事件。 – Zalem

+0

事實上,雖然MSDN表示在.Net CF中,Click方法繼承自底層Control類。我的.Net CF應用程序有一個名爲'output'的文本框,我可以添加以下代碼: 'Control x =(Control)output; x.Click + =新的EventHandler(myClickHandler);' 我沒有測試過它,但它可能爲你做這項工作。 – ColinM

回答

4

問題是Windows Mobile的內部事件處理。使用計時器並在事件觸發幾毫秒後執行SelectAll()修復問題。

只是這樣做,而不是通常SelectAll()GotFocus事件處理程序:

var timer = new Timer { Interval = 100, Enabled = true }; 
timer.Tick += (EventHandler) delegate 
{ 
    SelectAll(); 
    timer.Dispose(); 
}; 
+0

這不是最好的解決方案,但它也適用於其他版本的.net框架。 –