在文本框中单击一下即可选择点击的单词

时间:2011-05-31 20:14:13

标签: c# silverlight windows-phone-7 textbox selection

在Windows Phone 7应用中。我碰巧在TextBox中堆叠了许多ItemsControl个,并且文本框中用于选择的行为不均匀,即单击任何文本框中的任何单词都不会选择所点击的单词。首先使用单击来聚焦文本框,然后使用另一个来实际选择单词;但是一旦文本框具有焦点,只需单击一下即可选择其中的任何单词,直到用户想要在另一个文本框中选择其他单词为止。有没有办法中和这个?可能是通过在GotFocus事件中提高虚假鼠标左键和向上事件来发生事件?

我做的是,在LeftMouseButtonDown(和up)事件中我存储了事件args。在GotFocus上,我尝试使用存储的args引发事件,但用于引发事件的事件处理程序var始终为null,因此不会发生引发事件。我是C#的新手,所以我不确定我在哪里离题。

1 个答案:

答案 0 :(得分:2)

刚刚发现了一个巧妙的伎俩!只需点击一下TextBox控件,就可以使用TextBox的GotFocus属性获得焦点和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);
    }

在此发布,以便稍后可以帮助某人。