2011-05-31 41 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); 
    } 

在此处张贴以便稍后帮助他人。

相关问题