Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
 Аватар для smay
3 / 3 / 5
Регистрация: 07.12.2013
Сообщений: 189

Собственное диалоговое окно замены текста в текстовом редакторе

07.12.2013, 02:34. Показов 2094. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, мне нужно сделать кнопку "Заменить" для своего блокнотика, мне подсказали, что мне нужно создать свое диалоговое окно, где будет 2 TextBox'a и кнопка "Заменить". Кто поможет?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2013, 02:34
Ответы с готовыми решениями:

Сохранение текста в текстовом редакторе без запроса SaveFileDialog
Всех с Новым годом! Работаю в VB 2010. Проблема следующая. Создал текстовый редактор, но никак не могу сделать чтобы SaveFileDialog...

Собственное диалоговое окно
В NetBeans создал диалоговое окошко , разместил на ней TextEdit и 2 кнопки. Подскажите пож. как мне при нажатии на одну кнопку передать...

Вывод в диалоговое окно текста и переменной
Нужно вывести в диалоговое окно Текст и значение переменной. Вот, на подобии такого: AlertDialog.Builder builder = new...

12
 Аватар для Nachrichter
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
07.12.2013, 12:33
Цитата Сообщение от smay Посмотреть сообщение
Кто поможет?
Помочь форму создать с контролами создать? Или не знаете, как её показать?
VB.NET
1
Form2.ShowDialog() 'к примеру
0
 Аватар для smay
3 / 3 / 5
Регистрация: 07.12.2013
Сообщений: 189
07.12.2013, 12:57  [ТС]
Знаешь кнопку "заменить" в блокнотике стандартном?) Мне нужно сделать его копию, но не знаю как сделать окошко
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
07.12.2013, 13:13
Цитата Сообщение от smay Посмотреть сообщение
Знаешь кнопку "заменить" в блокнотике стандартном?) Мне нужно сделать его копию, но не знаю как сделать окошко
Так судя по заданию, одним окошком там явно дело не обойдется (если нужна именно такая функциональность, как в стандартном Блокноте). Для начала нужно организовать поиск по тексту того, ЧТО вы хотите заменить, и только потом уже будет замена.
Верно?
0
 Аватар для smay
3 / 3 / 5
Регистрация: 07.12.2013
Сообщений: 189
07.12.2013, 14:26  [ТС]
Вот, как делал я, с помощью 2х InputBox'ов, а нужно одним, в котором будет 2 поля ввода
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub ЗаменитьToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ЗаменитьToolStripMenuItem.Click
        Dim TXTT As String = InputBox("Слово, которое нужно заменить:", "Заменить слово", "", 100, 100)
        Dim TXTTT As String = InputBox("На какое", "Заменить слово", "", 100, 100)
        Dim Pozition As Integer = 1 ' В переменной хранится позиция курсора 
        TextBox1.Text = Replace(TextBox1.Text, Trim(TXTT), Trim(TXTTT)) ' Функция Replace нужна для замены во всем тексте искомого слова, на новое слово(TextBox2 - текст, Textbox1 - искомое слово, TextBox3 - новое слово(замена)).
        If InStr(Pozition, LCase(TextBox1.Text), LCase(Trim(TXTT))) <> 0 Then ' При помощи функции InStr в TextBox2 ищем текст введенный в TextBox1, функции LCase нужна для перевода всех символов в нижний регистр, т.е. это для того чтобы искался текст не зависимо от того в каком регистре символ(короче, ПриВет и пРИвЕТ будет искаться одинаково). Функция Trim нужна для обрезания пробелов слево и справо. Переменная Pozition задает позицию курсора(по умолчания Pozition = 1, т.е. поиск будет с первого символа)
            TextBox1.Focus() ' TextBox2 передаем фокус
            Dim b As String = TextBox1.Text.IndexOf(TXTT)
            TextBox1.SelectionStart = b
            b = InStr(Pozition, LCase(TextBox1.Text), LCase(Trim(TextBox1.Text))) - 1 ' Устанавливаем позицию курсора перед найденным словом. Всё дело в том, что если в тексте было найденно искомое слово, то функция выдает позицию этого слова(т.е. количество символов перед искомым словом в тексте). 
            TextBox1.SelectionLength = Len(Trim(TXTT)) ' Выделяем найденное слово(выделение начинается с позиции курсора, и длится столько, сколько символов в слове)
            TextBox1.ScrollToCaret() ' Прокручиваем текст до выделенного слова 
            TextBox1.SelectedText = Trim(TXTTT) ' Заменяем выделенный текст
            Dim kk As String = TextBox1.Text.IndexOf(TXTT)
            TextBox1.SelectionStart = kk
        Else ' Если ни чего не найденно(или поиск закончен), то выдаем сообщение и устанавливаем значение переменных по умолчанию 
            MsgBox("Замена завершена")
            Pozition = 1
        End If
    End Sub
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
07.12.2013, 19:38
Цитата Сообщение от smay Посмотреть сообщение
Знаешь кнопку "заменить" в блокнотике стандартном?)
Это обычный MessageBox, но там нет никаких
Цитата Сообщение от smay Посмотреть сообщение
2 TextBox'a
Это разные вещи.

Не по теме:

Или в новых ОС такие теперь?

0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
07.12.2013, 19:55
Какой-то чересчур сложный алгоритм поиска...
Вот попробуй так, сделал так же для 2-х InputBox-ов, под отдельную форму с двумя полями сам подогнать сможешь?
Кстати, советую как настольную книгу Мэтью Макдональда (про нее тут на форуме есть упоминание). Отличная штука, пример как раз оттуда, только переделан, естественно.
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
Public Class Form1
    Private MatchesCount As Integer
    Private Function FindMatches(ByVal StringToSearch As String,
                                    ByVal SearchFor As String, ByVal ReplaceFor As String) As String
        Dim Position As Integer = 0
 
        Do
            Position = StringToSearch.IndexOf(SearchFor, Position,
                                              System.StringComparison.InvariantCultureIgnoreCase)
            If Position <> -1 Then
                StringToSearch = StringToSearch.Remove(Position, SearchFor.Length)
                StringToSearch = StringToSearch.Insert(Position, ReplaceFor)
                MatchesCount += 1
                Position += ReplaceFor.Length
            End If
        Loop Until Position = -1
 
        Return StringToSearch
    End Function
 
    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim S1 As String = InputBox("Введите строку для поиска")
        Dim S2 As String = InputBox("Введите строку для замены")
        MatchesCount = 0
        TextBox1.Text = FindMatches(TextBox1.Text, S1, S2)
        If MatchesCount <> 0 Then
            MsgBox("Заменено " & MatchesCount & " совпадений")
        Else
            MsgBox("Совпадений не найдено")
        End If
    End Sub
End Class
0
 Аватар для 646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
09.12.2013, 23:21
Цитата Сообщение от Памирыч Посмотреть сообщение
Это обычный MessageBox
Типичная форма) Запусти блокнот и затем "Правка - Заменить"
1
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
09.12.2013, 23:40

Не по теме:

646kapeh064, какие люди :friends:



Да, теперь дошло.
smay, прошу прощения, я переименовал Вашу тему совсем не так как нужно. Теперь "справедливость восстановлена"
0
 Аватар для Серж_87
1303 / 509 / 63
Регистрация: 09.08.2012
Сообщений: 2,056
10.12.2013, 00:07
Может быть стоит установить шаблон "Microsoft Notepad Clone" ? Там как раз есть такая форма замены
0
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
10.12.2013, 00:17
Что на форме, показано на рисунке.
Код формы (собственно, код кнопок найти и заменить):
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
Private Sub btnLookFor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLookFor.Click
        Dim STR As String = frmMain.txtEditor.Text
        Dim SubSTR As String = Me.txtLookFor.Text
        Dim L As Integer = Me.txtLookFor.Text.Length
        Dim Ind As Integer
        Ind = InStr(frmMain.start, STR, SubSTR)
        If Ind > 0 Then
            frmMain.txtEditor.SelectionStart = Ind - 1
            frmMain.txtEditor.SelectionLength = L
            frmMain.start = Ind + L
            frmMain.txtEditor.ScrollToCaret()
        Else
            frmMain.txtEditor.SelectionStart = 0
            frmMain.txtEditor.SelectionLength = 0
            frmMain.start = 1
            frmMain.txtEditor.ScrollToCaret()
            MsgBox("Пройден конец документа", MsgBoxStyle.Information, "Записная книжка")
        End If
    End Sub
 
    Private Sub btnReplase_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnReplase.Click
        frmMain.txtEditor.Text = frmMain.txtEditor.Text.Replace(Me.txtLookFor.Text.ToLower, Me.txtReplase.Text.ToLower)
    End Sub
В коде имеется frmMain.txtEditor: frmMain - основная форма, txtEditor - окно текстбокса, в котором ищем и заменяем текст (назовем его текстовым редактором)
Форма вызывается в диалоговом режиме из окна frmMain таким кодом:
VB.NET
1
2
3
4
5
Dim SR As New frmSearch_Replase
        If Me.txtEditor.SelectionLength > 0 Then
            SR.txtLookFor.Text = Me.txtEditor.SelectedText
        End If
        SR.ShowDialog()
Т.е. если перед вызовом в txtEditor мы выделили некоторый кусок текста, то в окне поиска и замены он будет присутствовать в текстбоксе для искомого текста.
Миниатюры
Собственное диалоговое окно замены текста в текстовом редакторе  
1
 Аватар для smay
3 / 3 / 5
Регистрация: 07.12.2013
Сообщений: 189
10.12.2013, 01:09  [ТС]
Юпатов Дмитрий, На start ругается
0
 Аватар для Юпатов Дмитрий
1721 / 1208 / 228
Регистрация: 23.12.2010
Сообщений: 1,544
10.12.2013, 01:17
Да, забыл. В классе frmMain объявить надо:
VB.NET
1
Friend start As Integer = 1
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2013, 01:17
Помогаю со студенческими работами здесь

Вывод текста из файла в диалоговое окно winAPI
Доброго времени суток! Прошу помочь, не могу понять как сделать. Программа выводит окно с диалоговым окном,вводя текст в которое,...

Как поменять шрифт текста через диалоговое окно
Здравствуйте! Не подскажете, как можно изменить шрифт текста в дочернем окне с помощью диалогового окна.

Как отредактировать файл специального формата в текстовом редакторе или редакторе кодов?
Привет специалистам! Я - программист СУБД и не могу решить указанную задачу. Как отредактировать файл специального формата (XLS,...

Организовать ввод текста. По нажатию Enter показать диалоговое окно с введенным текстом
помогите.плиз Организовать ввод текста. По нажатию Enter показать диалоговое окно с введенным текстом

Окно поиска замены текста
Подскажите где и как в VS C++ можно найти окно поиска замены текста в richtextbox как в обычном блокноте , если можно поделитесь шаблоном ,...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru