Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 28.12.2020
Сообщений: 9

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

09.07.2021, 13:02. Показов 4507. Ответов 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
4149 / 2568 / 647
Регистрация: 23.09.2014
Сообщений: 8,264
Записей в блоге: 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
17899 / 13995 / 5345
Регистрация: 17.03.2014
Сообщений: 28,654
Записей в блоге: 1
09.07.2021, 16:17
Цитата Сообщение от XLAT Посмотреть сообщение
Далее вам нужно разобрать два момента.
А можно ничего не разбирать, а использовать File::ReadAllLines который вернет массив строк, которые легко и просто записать в textBox-ы.
1
Just Do It!
 Аватар для XLAT
4149 / 2568 / 647
Регистрация: 23.09.2014
Сообщений: 8,264
Записей в блоге: 2
09.07.2021, 16:33
Цитата Сообщение от OwenGlendower Посмотреть сообщение
А можно ничего не разбирать
а можно полностью пересесть на шарп: управляемый код форева.

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

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

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

OwenGlendower,
есть достаточно людей которые ничего не хотят знать про NET фрейморк,
но уже хотят юзать редакторы форм.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17899 / 13995 / 5345
Регистрация: 17.03.2014
Сообщений: 28,654
Записей в блоге: 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
4149 / 2568 / 647
Регистрация: 23.09.2014
Сообщений: 8,264
Записей в блоге: 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
17899 / 13995 / 5345
Регистрация: 17.03.2014
Сообщений: 28,654
Записей в блоге: 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
17899 / 13995 / 5345
Регистрация: 17.03.2014
Сообщений: 28,654
Записей в блоге: 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
17899 / 13995 / 5345
Регистрация: 17.03.2014
Сообщений: 28,654
Записей в блоге: 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
17899 / 13995 / 5345
Регистрация: 17.03.2014
Сообщений: 28,654
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер