2011-05-31 70 views
2

在Windows Phone 7應用程序中。我碰巧有很多TextBox s堆積在ItemsControl中,並且跨文本框選擇的行爲不均勻,即任何文本框中的任何單詞的單擊都不會選擇分接的單詞。首先消耗點擊用於聚焦文本框,然後用於實際選擇該單詞;但一旦文本框具有焦點,只需單擊一下即可選擇任何單詞,直到用戶想要在另一個文本框中選擇其他單詞爲止。有沒有辦法來消除這種情況?可能是通過在GotFocus事件中提升假鼠標左鍵按下事件和事件?在文本框中單擊一次即可選擇單擊的單詞

我所做的是,在一個LeftMouseButtonDown(和up)事件中,我存儲了事件參數。在GotFocus上,我嘗試使用存儲的參數來引發事件,但事件處理函數var用於引發事件始終爲空,因此引發事件不會發生。我是C#的新手,所以我不確定我在哪裏離題。

+0

在事件中您可以設置e.Cancel = true,然後將文本框設置爲選中狀態。你試過這個嗎? – kanchirk 2011-05-31 20:47:24

+0

@kanchirk:沒有 – legends2k 2011-05-31 21:29:19

回答

2

剛剛發現一個整潔的把戲!在TextBox控件的單擊上獲得焦點,並在GotFocus例程中使用TextBox的SelectionStart屬性,可以獲得當前在其前面具有插入符號的字符。利用這些數據,可以找到具有空格字符的左邊界和右邊界,並因此選擇該詞。

private void textBox_GotFocus(object sender, RoutedEventArgs e) 
    { 
     TextBox txtBox = (TextBox)sender; 
     char [] strDataAsChars = txtBox.Text.ToCharArray(); 
     int i = 0; 
     for (i = txtBox.SelectionStart - 1; ((i >= 0) && 
          (strDataAsChars[i] != ' ')); --i) ; 
     int selBegin = i + 1; 
     for (i = txtBox.SelectionStart; ((i < strDataAsChars.Length) && 
              (strDataAsChars[i] != ' ')); ++i) ; 
     int selEnd = i; 
     txtBox.Select(selBegin, selEnd - selBegin); 
    } 

在此處張貼以便稍後幫助他人。

相關問題