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

Ввод массива чисел в многострочном поле

27.07.2022, 12:24. Показов 5315. Ответов 64
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть вопрос, подскажите пожалуйста:
если я ввожу массив чисел А и В в столбик в многострочном поле
в Delphi, то фрагмент программы выглядит следующим образом:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
procedure TForm1.FormCreate(Sender: TObject);
begin
 Memo1.Clear; Memo2.Clear;
 Memo1.Lines.Add('A =');
 Memo1.Lines.Add('B =');
end;
procedure TForm1.Button1Click(Sender: TObject);
 var
  A,B,C:real;
begin
  A:=StrToFloat(Memo1.Lines.ValueFromIndex[0]);
  B:=StrToFloat(Memo1.Lines.ValueFromIndex[1]);
  C:=A+B;
  Memo2.Lines.Add('C= '+FloatToStr(C));
end;
а как записать тоже самое в Visual Basic.NET ?
т.е. ввод массива А и В в многострочном поле в VB.NET ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.07.2022, 12:24
Ответы с готовыми решениями:

Прокрутка в многострочном поле
Элемент разметки создан тегом textarea. Как сделать, чтоб когда много строк, чтоб появлялась вертикальная прокрутка, а когда текст не...

Удаление строки в многострочном поле
Решил добавить к каждой записи поле с историей. (Кто и когда ее изменял) Там в многострочном виде хранятся такие данные типа: ...

Работа с текстом в многострочном поле ввода
Создайте приложение для работы с текстом в многострочном поле ввода. В зависимости, от того, какая кнопка нажата, соответственно изменяется...

64
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1
28.07.2022, 15:23
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Тим70 Посмотреть сообщение
как воставить курсор именно после В=,а не на строку ниже
Ваш код не проверял, а просто просмотрел, но думаю, что при восстановлении состояния текстбокса нужно убрать последний символ переноса строки вот тут
VB.NET
1
TextBox2.Lines = Lines.ToArray
0
Любитель
 Аватар для Тим70
1072 / 784 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
28.07.2022, 15:37
Цитата Сообщение от Uswer Посмотреть сообщение
при восстановлении состояния текстбокса
Вопрос не здесь.Вот тут не получается
VB.NET
1
2
3
   TextBox2.Text &= vbNewLine & "B="
                TextBox2.SelectionStart = TextBox2.TextLength
                TextBox2.Focus()
0
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1
28.07.2022, 15:45
Цитата Сообщение от Тим70 Посмотреть сообщение
Вот тут не получается
Когда код TextBox2_KeyPress отработает нажатие Enter, то сам перенос строки добавится в текст и курсор перейдёт на следующую строку.
0
4709 / 3662 / 857
Регистрация: 02.02.2013
Сообщений: 3,518
Записей в блоге: 2
28.07.2022, 15:47
Лучший ответ Сообщение было отмечено Shackih как решение

Решение

Цитата Сообщение от Shackih Посмотреть сообщение
Задача простая, вопрос простой:
Да, задача простая, но вы накладываете ограничения на ее реализацию. То есть не как проще и результативнее решить задачу, а именно так и только так.
Вариант
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 Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    TextBox1.Text = "A=" & vbCrLf & "B="
    Me.Show()
    TextBox1.Focus()
    TextBox1.SelectionStart = TextBox1.Text.Length
    TextBox1.SelectionLength = 0
End Sub
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    Static s() As String
    s = TextBox1.Lines
    Dim s1 = s(0).Split("="c)
    Dim s2 = s(1).Split("="c)
    If s1.Length < 2 Then Exit Sub
    If s2.Length < 2 Then Exit Sub
    Try
        Dim a As Integer = Convert.ToInt32(s1(1))
        Dim b As Integer = Convert.ToInt32(s2(1))
        TextBox2.Clear()
        TextBox2.Text = "C=" & (a + b).ToString
    Catch ex As Exception
        TextBox2.Clear()
    End Try
End Sub
Изображения
 
2
2298 / 1614 / 400
Регистрация: 26.06.2017
Сообщений: 4,780
Записей в блоге: 1
28.07.2022, 15:47
Попробуйте после TextBox2.Focus() вставить e.Handled = True
1
Любитель
 Аватар для Тим70
1072 / 784 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
28.07.2022, 16:04
Цитата Сообщение от Uswer Посмотреть сообщение
вставить e.Handled = True
Да ,это решило проблемму.Спасибо!

Добавлено через 2 минуты
А я всю голову сломал...
0
1 / 1 / 0
Регистрация: 15.04.2022
Сообщений: 48
28.07.2022, 20:25  [ТС]
За советы благодарю. Большое спасибо.
Но честно говоря, я не совсем понял с какого варианта кода мне начать изучение.
Вопрос я задал потому что только начал изучать VB.NET, в VB.NET я новичок.
Восставить курсор за В=| или на следующей строке - это не принципиально.
Многострочное поле мне нужно потому, что там есть полоса прокрутки и
при решении конкретной задачи мне придется вводить не массив из двух
чисел, а массив А=, В=, С= и так далее из 20 или 30 чисел, и с помощью
полосы прокрутки я могу просматривать весь массив - и если замечу ошибки
ввода чисел, то их тут же исправлять. После нажатия кнопки ОК я должен
получить результат во втором многострочном поле. Только и всего.
Например, в последнем коде я не обнаружил обработку события
Button1_Click (или другими словами, обработку нажатия кнопки ОК).
Буду разбираться с предложенными кодами, думаю через год разберусь.
0
Любитель
 Аватар для Тим70
1072 / 784 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
28.07.2022, 20:55
Shackih, Так все таки МАССИВЫ! Тогда смотрите коды выше,они все работают с массивами.В последних кодах нет события Button1_Click, потому что они работают с парой чисел и срабатывают при нажатии кногпки Enter.Вы хоть попробуйте коды в работе,чтобы понять что к чему.
1
Любитель
 Аватар для Тим70
1072 / 784 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
28.07.2022, 22:16
Вот попробуйте.Похоже,то что вам и нужно.
Вложения
Тип файла: rar Многострочное.rar (184.8 Кб, 6 просмотров)
0
Любитель
 Аватар для Тим70
1072 / 784 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
28.07.2022, 22:45
Shackih, Забыл добавить.Ввод чисел через пробел и разделитель запятая.
0
1 / 1 / 0
Регистрация: 15.04.2022
Сообщений: 48
28.07.2022, 23:22  [ТС]
Спасибо за программу "Многострочное". Только что открыл проект - он работает (проблемы не обнаружены).
С этого кода я и хотел продолжить изучение VB.NET.
Но хотел бы уточнить: я буду иметь дело не с МАССИВАМИ, а только с одним МАССИВОМ чисел, причем массив
чисел не имеет имени (он не называется не А(), не В(), никак), каждое число массива обозначается своей буквой, так что
получается примерно так (в первом многострочном поле):
А=1
Б=2
В=1
Г=0
Д=2
....
и так далее, до 30 - 40 чисел в столбик (с разными буквами ! ). Поэтому нужна полоса прокрутки.
Во втором многострочном поле выводится, например, сумма и произведение всех чисел:
Ю=99
Я=1987
т.е. во втором многострочном поле будет задействовано всего две строки (может быть больше строк, зависит от задачи).
Вот такая простая задача. Эта задача простая арифметическая, только с большим набором чисел (но не с массивом).
В программе "Многострочное" не высвечивается:
А=
В=
При нажатии на Button1 ничего не выводится во второе многострочное поле. Я еще не совсем разобрался с кодом.
Спасибо за помощь, буду постепенно разбираться.
0
Любитель
 Аватар для Тим70
1072 / 784 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
28.07.2022, 23:33
Shackih, Вот ее работа
Миниатюры
Ввод массива чисел в многострочном поле  
1
Любитель
 Аватар для Тим70
1072 / 784 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
28.07.2022, 23:42
Раз всетаки массив,хоть и один,то правильней будет так
а(0)=6
а(1)=2
а(2)=7
ну и так далее.Подумайте над этим.
0
Любитель
 Аватар для Тим70
1072 / 784 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
29.07.2022, 01:25
Попробуйте это.Числа вводятся построчно без всяких букв.Буквы появятся во втором поле.Кнопку "Разность" сделал для примера,что массив уже создан и с ним можно делать,что угодно.
Миниатюры
Ввод массива чисел в многострочном поле  
Вложения
Тип файла: rar Поле.rar (50.0 Кб, 2 просмотров)
1
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
29.07.2022, 02:31
Тим70, Shackih, Если А,Б,В и т.п. - это фиксированнын имена, то может (уж если задача стоит про многострочный текст) добавить эти имена в многострочный Label, указать тот же шрифт и размер, что и текстбой и разместить слева от Текстбокса, тоесть Вам понадобится толтко в строчку ввести их начения, тем более Тим70 уже сделал пример решения вашей задачи, в него лишь добавить имена в Label разместив слева...
1
1 / 1 / 0
Регистрация: 15.04.2022
Сообщений: 48
29.07.2022, 06:56  [ТС]
Проверил работу программы в соответствии с первым рисунком - она работает ! Опять же , спасибо за подсказку.
Но весь фокус в том, что мне нужно, чтобы А=, В=,... или а(1)=, а(2)=,... высвечивались именно в первом
многострочном поле, все 30 или 40 букв, еще до того, как я буду вводить числа, чтобы видно было
какой букве соответствует какое число, - так легко вводить числа и их сразу же проверять. Если передо мной
будет столбик из 30-40 чисел (без букв), я просто запутаюсь, какой букве принадлежит какое число, тем более, если
какое-либо число будет введено ошибочно. Очень и очень не удобно.
С многострочным Label я еще не разбирался; я VB.NET изучаю всего 2-3 недели, мало еще знаю. Есть ли там полоса прокрутки.
Файл "Поле.rar" скачать не смог, компьютер что-то заблокировал скачку.
Еще раз, большое спасибо за помощь, думаю постепенно разберусь.
Интересно, что в учебниках я ответа на свой вопрос не нашел, поэтому и спросил на форуме.
0
Любитель
 Аватар для Тим70
1072 / 784 / 161
Регистрация: 27.01.2019
Сообщений: 1,552
29.07.2022, 08:05
Yury Komar, Хорошая идея,надо попробовать
0
1 / 1 / 0
Регистрация: 15.04.2022
Сообщений: 48
29.07.2022, 08:48  [ТС]
Проблема, кажется, решена. Я опробовал код участника ovva (2-я стр.), работает так как надо,
но мне, как новичку, не понятен смысл строк:
Dim S1=S(0).Split("="с)
Dim S2=S(1).Split("="с)
а именно, смысл значка с.

Добавлено через 32 минуты
И, самое главное, если массив чисел состоит не из двух, а большего числа цифр,
то не появляется полоса прокрутки в многострочном поле TextBox1, чтобы просматривать весь массив.
Может быть можно как-то подкорректировать код, что бы появлялась полоса прокрутки ?

Добавлено через 2 минуты
Может быть там надо изменить какое-то свойство TextBox1, чтобы появлялась полоса прокрутки ?
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4375 / 3445 / 512
Регистрация: 27.01.2014
Сообщений: 6,267
29.07.2022, 08:49
Shackih, смысл значка "с" - это указание на то, что знак равенства "=" является знаком/символом (от англ. CHAR), Этот "с" можно не указыкать, VB сам справится и без него.
0
1 / 1 / 0
Регистрация: 15.04.2022
Сообщений: 48
29.07.2022, 09:24  [ТС]
Спасибо большое за советы и разъяснения, проблема решена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.07.2022, 09:24

Приложение позволяет управлять работой с текстом в многострочном поле ввода
Помогите сделать лабу 2. Приложение позволяет управлять работой с текстом в многострочном поле ввода. Два флажка позволяют...

Как раскрасить только кусок текста в многострочном поле Text()?
Есть код: from Tkinter import * root=Tk() n=Text(root,font=&quot;Verdana 16&quot;,width=300,wrap=WORD) #хочу выделить первую строку красным...

Создайте приложение для работы с текстом в многострочном поле ввода
Помогите сделать лабу 3. Создайте приложение для работы с текстом в многострочном поле ввода. В зависимости, от того, какая кнопка...

Ввод и вывод элементов массива. Вывести на экран все четные элементы массива из n целых чисел. Ввод элементов массива, осуществляется вручную с клавы
Ввод и вывод элементов массива. Вывести на экран все четные элементы массива из n целых чисел. Ввод элементов массива, осуществляется...

Ввод в текстовое поле чисел с плавающей точкой
Добрый вечер. Подскажите пожалуйста как можно сделать проверку на ввод в текстовое поле чисел с плавающей точкой ( причем разделительный...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru