Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
3 / 3 / 0
Регистрация: 16.09.2014
Сообщений: 69

Как перейти на нужную строку в RichTextBox?

09.01.2017, 14:46. Показов 2171. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Наверно, другими словами переместить указатель.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.01.2017, 14:46
Ответы с готовыми решениями:

Как программно перейти на нужную вкладку TabControl
Имеется форма NewSel c TabControl-ом Pf и вкладками P1 и P2. Необходимо в произвольной процедуре, которая вызывается например из...

Как найти в DataTable.Rows нужную строку?
У меня есть DataTable в которой содержатся коды профессий и наименования профессий (CodeID, ProfName) Как программно, не пользуясь For...

Как из сохраненного файла считать нужную строку
Imports System.IO Public Class Form1 Public x, y, z As Integer Public imya As String Public cash = 100 ...

6
39 / 38 / 6
Регистрация: 17.07.2015
Сообщений: 380
Записей в блоге: 1
09.01.2017, 15:00
https://msdn.microsoft.com/ru-... .110).aspx

Добавлено через 1 минуту

Не по теме:

Лучше пользуйтесь поисковиками, talon788

0
3 / 3 / 0
Регистрация: 16.09.2014
Сообщений: 69
09.01.2017, 22:26  [ТС]
Спаси Бог.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
' Create a new FlowDocument, and add 3 paragraphs.
Dim flowDoc As New FlowDocument()
flowDoc.Blocks.Add(New Paragraph(New Run("Paragraph 1")))
flowDoc.Blocks.Add(New Paragraph(New Run("Paragraph 2")))
flowDoc.Blocks.Add(New Paragraph(New Run("Paragraph 3")))
' Set the FlowDocument to be the content for a new RichTextBox.
Dim rtb As New RichTextBox(flowDoc)
 
' Get the current caret position.
Dim caretPos As TextPointer = rtb.CaretPosition
 
' Set the TextPointer to the end of the current document.
caretPos = caretPos.DocumentEnd
 
' Specify the new caret position at the end of the current document.
rtb.CaretPosition = caretPos
0
3 / 3 / 0
Регистрация: 16.09.2014
Сообщений: 69
10.01.2017, 21:18  [ТС]
Помогите. Вставил код с https://msdn.microsoft.com/ru-... -snippet-2. Вписал Imports System.Windows.Forms. Выдает ошибки.
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
' This method returns the position just inside of the first text Run (if any) in a 
' specified text container.
Private Function FindFirstRunInTextContainer(ByVal container As DependencyObject) As TextPointer
    Dim position As TextPointer = Nothing
 
    If container IsNot Nothing Then
        If TypeOf container Is FlowDocument Then
            position = (CType(container, FlowDocument)).ContentStart
        ElseIf TypeOf container Is TextBlock Then
            position = (CType(container, TextBlock)).ContentStart
        Else
            Return position
        End If
    End If
    ' Traverse content in forward direction until the position is immediately after the opening 
    ' tag of a Run element, or the end of content is encountered.
    Do While position IsNot Nothing
        ' Is the current position just after an opening element tag?
        If position.GetPointerContext(LogicalDirection.Backward) = TextPointerContext.ElementStart Then
            ' If so, is the tag a Run?
            If TypeOf position.Parent Is Run Then
                Exit Do
            End If
        End If
 
        ' Not what we're looking for on to the next position.
        position = position.GetNextContextPosition(LogicalDirection.Forward)
    Loop
 
    ' This will be either null if no Run is found, or a position just inside of the first Run element in the
    ' specifed text container.  Because position is formed from ContentStart, it will have a logical direction
    ' of Backward.
    Return position
End Function
Помогите, как найти текст и перейти на него.
Миниатюры
Как перейти на нужную строку в RichTextBox?  
0
 Аватар для Sklifosofsky
1085 / 915 / 213
Регистрация: 29.09.2015
Сообщений: 1,019
10.01.2017, 23:23
Лучший ответ Сообщение было отмечено talon788 как решение

Решение

Во куда вас закинуло. Это не стандартный RTB. Это расширенный из набора PresentationFramework. Чтобы его использовать требуется добавить несколько ссылок к проекту. WindowBase, PresentationFramework , PresentationCore, System.Xaml

В стандартном указатель можно переместить при помощи
VB.NET
1
Me.RichTextBox1.Select([позиция], 0)
Если нужно по строкам придется пошаманить

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    Public Sub SetCaretToRow(ByVal RowIndex As Integer, RTB As RichTextBox)
 
        Dim r As Integer = 0
        Dim s As Integer = 0
 
        For Each c As Char In RTB.Text
            If r = RowIndex Then
                RTB.Select(s, 0)
                RTB.Focus() ' нужно в случае если производится управление с другого элемента управления
                Return
            End If
            If c = vbLf Then
                r += 1
            End If
            s += 1
        Next
 
        'Throw New OverflowException("Индекс выходит за пределы коллекции") ' для контроля
 
    End Sub
2
 Аватар для Step_UA
1591 / 664 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
11.01.2017, 09:38
Лучший ответ Сообщение было отмечено talon788 как решение

Решение

... по строкам можно использовать функцию определения позиции первого знака в строке
VB.NET
1
2
3
4
5
6
7
8
9
10
11
    ' RowIndex - номер строки с ноля с учетом переносов
    Public Sub SetCaretToRow(ByVal RowIndex As Integer, ByVal RTB As RichTextBox)
        Dim PosInd As Integer
        PosInd = RTB.GetFirstCharIndexFromLine(RowIndex) 
        If PosInd >= 0 Then
            RTB.Select(PosInd, 0)
            RTB.Focus()
        Else
            ' нет такой строки
        End If
    End Sub
1
3 / 3 / 0
Регистрация: 16.09.2014
Сообщений: 69
11.01.2017, 13:08  [ТС]
Спаси Бог.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.01.2017, 13:08
Помогаю со студенческими работами здесь

Как найти в файле нужную строку и скопировать её ?
Как найти в файле нужную строку и скопировать её ? в visual basic .net

Как перейти на новую строку в VB.NET?
Как перейти на новую строку в VB.NET? В вб 6 это было как vbCrLf?

Как в RichTextBox программно создать новую строку
Простите за столь примитивный вопрос, но как в RichTextBox программно создать новую строку?:mda:

Как вынести строку текста из BackGroundWorker в RichTextBox главного потока?
Всем доброго времени суток. У меня такой вопрос: Использую BackGroundWorker для опроса периферии. По ответам устройств составляется...

Как в Word перейти на нужную страницу и строку
Понимаю, что тема уже обсуждалась, но возник вопрос, как переместиться на нужную строку нужной страницы? Есть документ из нескольких...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru