0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9

Из файла в несколько текстбоксов

09.07.2021, 13:02. Показов 4500. Ответов 15

Author24 — интернет-сервис помощи студентам
У меня есть файл, в котором несколько строк.

Вот например строки:
Часто ли Вы испытываете тягу к новым впечатлениям, чтобы отвлечься, испытать сильные ощущения?
Часто ли Вы чувствуете, что нуждаетесь в друзьях, которые могут Вас понять, ободрить, выразить сочувствие?
Считаете ли Вы себя беззаботным человеком?

Мне нужно каждую строку записать в отдельный richtextbox/textbox. Как это сделать?(((
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.07.2021, 13:02
Ответы с готовыми решениями:

Несколько текстбоксов
Всем привет!!! Вопрос такой: есть форма, на ней несколько текстбоксов (в них заполняется информация о сотруднике), сохраняю в бинарном...

Мультитриггер на несколько текстбоксов
Всем привет. Задача: заблочить баттон, если три текстбокса пусты. Следующим кодом, баттон блочится. Но! если ввести в один из них...

Запрет ввода символа в несколько текстбоксов
У меня есть несколько текстбоксов. Создаются они следующим образом int k = Convert.ToInt32(razm.Text); tb = new TextBox; ...

15
Just Do It!
 Аватар для XLAT
4144 / 2563 / 646
Регистрация: 23.09.2014
Сообщений: 8,255
Записей в блоге: 2
09.07.2021, 15:56
Цитата Сообщение от Katherina_S Посмотреть сообщение
Как это сделать?
используйте паттерн MVC

Кликните здесь для просмотра всего текста

то была шутка.


используйте мощь C++/CLR:
его способность работать со стандартным С++.

тогда пИшите на плюсах стандартный код:
(консольный тест.)
C++ Скопировано
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
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
 
struct  File
{       File(std::string mame_file)
        {   std::ifstream file(mame_file);
            for(std::string s; std::getline(file, s);)
            {   m.push_back(s);
            }
        }
       
        std::string get(std::size_t n)
        {   if(n < m.size()) return m[n]    ;
            else             return "EMPTY.";
        }
       
       std::size_t size(){return m.size();}
       
private:
    std::vector<std::string> m;
};
 
int main()
{   
    File file("test.txt");
    ///---------------------------------------|
    /// Эмуляция баттонов.                    |
    ///---------------------------------------:
    for(std::size_t i = 0; i < file.size(); ++i)
    {    std::cout << "BUTTON" << i+1 << " " << file.get(i) << '\n';
    }
}
1. объект file является хранилищем строк полученных из файла.
2. к каждой строке можно обратиться по номеру.
3. обращение очевидно можно повесить на батон так чтобы номера их соответствовали.

Далее вам нужно разобрать два момента.
(это нужно сделать только один раз и этого вам хватит на всю жизнь)

1. маршалинг: преобразование типов из неуправляемого кода в управляемый.
2. заюзать(речь про конверторы) UTF-8 кодировку, для хранения русского текста в файлах.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17898 / 13994 / 5346
Регистрация: 17.03.2014
Сообщений: 28,652
Записей в блоге: 1
09.07.2021, 16:17
Цитата Сообщение от XLAT Посмотреть сообщение
Далее вам нужно разобрать два момента.
А можно ничего не разбирать, а использовать File::ReadAllLines который вернет массив строк, которые легко и просто записать в textBox-ы.
1
Just Do It!
 Аватар для XLAT
4144 / 2563 / 646
Регистрация: 23.09.2014
Сообщений: 8,255
Записей в блоге: 2
09.07.2021, 16:33
Цитата Сообщение от OwenGlendower Посмотреть сообщение
А можно ничего не разбирать
а можно полностью пересесть на шарп: управляемый код форева.

легаси же грузить через динамические либы.

НО!
это же C++\CLR !

разумеется, ещё нужны кое- какие усилия, чтобы научиться им наслаждаться.

OwenGlendower,
есть достаточно людей которые ничего не хотят знать про NET фрейморк,
но уже хотят юзать редакторы форм.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17898 / 13994 / 5346
Регистрация: 17.03.2014
Сообщений: 28,652
Записей в блоге: 1
09.07.2021, 20:32
XLAT, я это понимаю и не призываю использовать только управляемые классы. Речь о другом. В данном случае использование STL усложняет код не давая видимой пользы. В том время как решение с родным File::ReadAllLines будет заметно короче и проще. Почему бы не брать лучшее из двух миров.

Цитата Сообщение от XLAT Посмотреть сообщение
есть достаточно людей которые ничего не хотят знать про NET фрейморк,
но уже хотят юзать редакторы форм.
Не лучше Qt таким людям использовать? Microsoft давно не развивает Windows Forms для C++/CLI. И такое ощущение что поддержка Windows Forms это скорее proof of concept чем законченный продукт. Чего только стоит отсутствие разделения на h и cpp файлы. Весь код валят в h файл, а если разделить код как полагается, то дизайнер не может уже найти обработчики событий.
0
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9
09.07.2021, 21:12  [ТС]
Я бы не лезла, но это учебная практика(
0
Just Do It!
 Аватар для XLAT
4144 / 2563 / 646
Регистрация: 23.09.2014
Сообщений: 8,255
Записей в блоге: 2
09.07.2021, 21:39
Цитата Сообщение от Katherina_S Посмотреть сообщение
Я бы не лезла
ок,
выше код в таком виде:
C++ Скопировано
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/// "myfile.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
 
#include <windows.h>
 
struct  File
{
    File(std::wstring mame_file)
    {
        std::ifstream file(mame_file);
        for (std::string s; std::getline(file, s);)
        {
            m.push_back(s);
        }
    }
 
    std::wstring get(std::size_t n)
    {
        if (n < m.size()) return convert_UTF8_to_WCHAR(m[n]);
        else              return L"EMPTY.";
    }
 
    std::size_t size() { return m.size(); }
 
private:
    std::vector<std::string> m;
 
    std::wstring convert_UTF8_to_WCHAR(std::string& str, WORD CODE = CP_UTF8)
    {
        size_t len = MultiByteToWideChar(CODE, 0, str.c_str(), -1, 0, 0);
        std::wstring wchar_text(len, ' ');
        MultiByteToWideChar(CODE, 0, str.c_str(), -1, &wchar_text[0], len);
        return wchar_text;
    }
};
 
inline void test_class_File()
{
    File file(L"test.txt");
    ///---------------------------------------|
    /// Эмуляция баттонов.                    |
    ///---------------------------------------:
    for (std::size_t i = 0; i < file.size(); ++i)
    {
        std::wcout << "BUTTON" << i + 1 << " " << file.get(i) << '\n';
    }
}
- скопипастил в CLR'овскую консоль.
- добавил формс-итем.
- на форму кинул три батона и текстбокс.
- рядом положил текстовик в utf-8 кодировке

как оно выглядит:
Из файла в несколько текстбоксов


хм, написание данной демки ваще не написание, а сплошная копипаста из других демок.

весь солушен тут:
Вложения
Тип файла: rar test-VS2019(C++CLR).rar (70.8 Кб, 8 просмотров)
1
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9
09.07.2021, 22:22  [ТС]
Блин, не знаю, правильно ли меня поняли. Суть программы - психологический тест, в котором 57 вопросов, вот я и хочу как-то автоматизировать (грубо говоря) запись строк в каждый текст бокс (один текст бокс = один вопрос). Думаю, не совсем правильно вручную прописывать.. Также, преподаватель сказал читать из файла и лучше реализовать через текст боксы..(из библиотеки using namespace System::IO; ). ((
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17898 / 13994 / 5346
Регистрация: 17.03.2014
Сообщений: 28,652
Записей в блоге: 1
10.07.2021, 11:37
Katherina_S, опишите точнее задачу. Вы хотите сразу вывести все 57 вопросов?
0
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9
10.07.2021, 12:06  [ТС]
На первой картинке как выглядит файл с вопросами
На второй как выглядит форма - на одну форму вмещается всего 20 вопросов, поэтому в дальнейшем планирую при нажатии кнопки "далее" обновлять форму, записывать в каждый текст бокс другой вопрос по списку после 20.
На третьей картинке просто в текст бокс вставила текст, чтобы было понятно как это все выглядит.
Миниатюры
Из файла в несколько текстбоксов   Из файла в несколько текстбоксов   Из файла в несколько текстбоксов  

0
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9
10.07.2021, 12:51  [ТС]
И вот хотелось бы чтобы при запуске сразу были написаны в каждом текст боксе эти вопросы, прочитанные из файла...
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17898 / 13994 / 5346
Регистрация: 17.03.2014
Сообщений: 28,652
Записей в блоге: 1
10.07.2021, 15:54
Katherina_S, если совсем просто делать, то сначала объявляем поле с массивов TextBox-ов (назовем его textBoxes) и инициализируем его. Кстати почему вы используете текстовые поля, а не метки (Label)? Начальное заполнение тогда будет выглядеть так
C++ Скопировано
1
2
3
4
5
auto questions = File::ReadAllLines("вопросы.txt");
for (int i=0; i<textBoxes->Length; i++)
{
    textBoxes[i]->Text = questions[i];
}
Для реализации кнопки Next нужно дополнительно запоминать на каком вопросе мы остановились и начинать вывод с него.

Но это решение решает только часть задачи. Ведь нужно не только выводить вопросы, но и запоминать ответы. По хорошему я бы сделал класс который хранит вопрос (String^) и ответ (Nullable<Boolean>). В самом начале мы создаем колекцию всех вопросов и затем выполняем data binding части этой коллекции к форме. В классе необходимо реализовать интерфейс INotifyPropertChanged чтобы при выборе ответа сразу вносилось соответствующее изменение в нужный вопрос. С кодом не помогу. Я меня нет под рукой VS с поддержкой C++.
1
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9
10.07.2021, 16:23  [ТС]
Не совсем все понятно с кнопкой далее, но это уже зацепка! Буду разбираться) Спасибо большое за помощь и отзывчивость!

Добавлено через 26 минут
А вы можете подсказать как объявить массив текст боксов? Я обшарила интернет, но ничего не подходит/не работает.
А вы думаете, что с label было бы логичнее/проще?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17898 / 13994 / 5346
Регистрация: 17.03.2014
Сообщений: 28,652
Записей в блоге: 1
10.07.2021, 18:01
Цитата Сообщение от Katherina_S Посмотреть сообщение
Я обшарила интернет, но ничего не подходит/не работает.
По запросу "C++/CLI array" находится страница How to: Use Arrays in C++/CLI

Цитата Сообщение от Katherina_S Посмотреть сообщение
А вы можете подсказать как объявить массив текст боксов?
C++ Скопировано
1
array< TextBox^ >^ textBoxes;
Цитата Сообщение от Katherina_S Посмотреть сообщение
А вы думаете, что с label было бы логичнее/проще?
Проще - нет. Только логичнее. Вопрос это статичный текст не предназначенный для редактирования пользователем. Элемент управления Label предназначен как раз для таких случаев.
1
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9
10.07.2021, 19:15  [ТС]
Теперь появился другой вопрос ;(
Массив лэйблов по сути пустой, как мне добавить туда мои лэйблы?(((
Программу он запускает, но никуда не вписывает строки..
Миниатюры
Из файла в несколько текстбоксов   Из файла в несколько текстбоксов  
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17898 / 13994 / 5346
Регистрация: 17.03.2014
Сообщений: 28,652
Записей в блоге: 1
11.07.2021, 09:58
Katherina_S, массив чисел или строк вы знаете как создать и заполнить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.07.2021, 09:58
Помогаю со студенческими работами здесь

Как поместить несколько текстбоксов в groupbox?
Доброго времени суток. Есть приложение на Windows Forms, перенося его на WPF встретился со следующей проблемой: В WF приложении есть...

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

Одновременная прокрутка двух текстбоксов(ритч текстбоксов)
Вообщем есть RichTextBox1 хочу что-бы когда прокручиваю его синхронно прокручивался и textBox1 (делаю текстовой редактор и занимаюсь...

Модификация кода, после ввода инфы в несколько текстбоксов между инфой ставится "and" и запись присущая каждому текстбок
Есть программа, если в текстбоксе1 есть запись то она записывается в текстбокс10, далее если в текстбоксе2 есть запись то она так же...

Как, используя fstream, считать текст из файла, содержащего несколько признаков конца файла?
Доброго всем времени. У меня есть файл, содержащий 2 JSON документа. Структура такая: - набор символов. Какие данные не...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

Новые блоги и статьи
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть. Дело в том, что я. . .
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
std::mutex в C++: Советы и примеры использования
bytestream 03.04.2025
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство. . .
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер