Мой Kbyte.Ru
Рассылка Kbyte.Ru
Группы на Kbyte.Ru
Партнеры Kbyte.Ru
Реклама
Сделано руками
Сделано руками
> Исходные коды - Алексей Немиро -

Visual Basic .NET - Элементы управления Windows

Все примеры / Интерфейс / Элементы управления Windows

Выбор слов в текстовом поле

Автор: Алексей Немиро | добавлено: 18.03.2011, 18:06 | просмотров: 2399 (3+) | комментариев: 0 | рейтинг: *x0
Пример показывает, как выбрать слово в (Rich)TextBox в зависимости от расположения каретки. Поиск границ слов осуществляется с помощью регулярных выражений.

Код

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Dim myRich As New RichTextBox()
  myRich.Text = "Это текст по которому можно ткнуть левой кнопкой мышки, " & vbCrLf & _
                "и выбранное слово появится в заголовке формы." & vbCrLf & _
                "Не стесняйтесь, попробуйте ;-)"
  myRich.Dock = DockStyle.Fill

  'обработчики событий
  AddHandler myRich.MouseDown, AddressOf myRich_MouseClick

  Me.Controls.Add(myRich)
End Sub

Private Sub myRich_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs)
  Dim myRich As RichTextBox = CType(sender, RichTextBox)
  'переменные для хранения координат слова в RichTextBox
  Dim iStart As Integer = 0, iEnd As Integer = 0
  'поиск границ слова делается при помощи регулярных выражений
  Dim myReg As System.Text.RegularExpressions.Regex
  'шаблон регулярного выражения
  Dim pattern As String = "[\.\,\!\?\x22\'\(\)\[\]\;\:\s\n]"

  If myRich.SelectionStart = 0 Then
    'курсор в начале строки
    iStart = 0
  Else
    'ищем начало слова
    'поиск начинаем с позиции курсора справа налево
    myReg = New System.Text.RegularExpressions.Regex(pattern, System.Text.RegularExpressions.RegexOptions.RightToLeft)
    iStart = myReg.Match(myRich.Text, myRich.SelectionStart).Index
  End If

  'ищем конец слова
  'поиск делаем слева направо относительно позиции курсора
  myReg = New System.Text.RegularExpressions.Regex(pattern)
  iEnd = myReg.Match(myRich.Text, myRich.SelectionStart).Index
  If iEnd <= 0 Then iEnd = myRich.Text.Length

  'выводим выбранное слово в заголовок формы
  Me.Text = myRich.Text.Substring(iStart, iEnd - iStart)
End Sub
Об авторе

Алексей Немиро

Интернет-деятель. Автор многочисленных статей и переводов статей по программированию и информационным технологиям. Работы Алексея можно найти в популярных печатных изданиях компьютерной тематики. Автор проекта Kbyte.Ru.
Сейчас Алексей занимается профессиональным Web-программированием на базе технологий .NET Framework. Иногда пишет различные программки и компоненты для Windows и Android. В свободное время занимается Web-дизайном, увлекается фото- и видеосъемкой.

См. также:
Профиль автора
Алексей Немиро
Последние комментарии (всего: 0)

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации OpenID.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.


Нет комментариев...

Авторизация
 
OpenID
Зарегистрируйся и получи 10% скидку на добавление своего сайта в каталоги! Подробнее »
Поиск по сайту
Реклама
Счетчики