Выделение надетого слова одним щелчком мыши в текстовом поле - PullRequest
2 голосов
/ 01 июня 2011

В приложении Windows Phone 7.У меня много TextBox сгруппированных в ItemsControl, и поведение между текстовыми полями для выбора не одинаково, т. Е. Один щелчок по любому слову в любом текстовом поле не выбирает слово, которое коснулось.Сначала клик используется для фокусировки текстового поля, а затем еще один, чтобы фактически выбрать слово;но как только текстовое поле имеет фокус, можно одним щелчком мыши выбрать любое слово внутри, пока пользователь не захочет выбрать другое слово в другом текстовом поле.Есть ли способ нейтрализовать это?Может быть, подняв фальшивую левую кнопку мыши вверх или вниз по событию GotFocus?

Что я сделал, в событии LeftMouseButtonDown (и выше) я сохранил аргументы события.На GotFocus я пытался вызвать событие с сохраненными аргументами, но обработчик события var, используемый для вызова события, всегда имеет значение null, следовательно, повышение события не происходит.Я новичок в C #, поэтому я не уверен, где я отвлекся.

1 Ответ

2 голосов
/ 01 июня 2011

Только что нашел изящный трюк!Одним нажатием элемента управления TextBox он получает фокус, а на подпрограмме GotFocus с использованием свойства SelectionStart TextBox можно получить текущий символ, который имеет курсор перед ним.С помощью этих данных можно найти левую и правую границы с пробелом и, таким образом, выбрать слово.

    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);
    }

Написал это здесь, чтобы потом кому-нибудь помочь.

...