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

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

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

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

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

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

OwenGlendower,
есть достаточно людей которые ничего не хотят знать про NET фрейморк,
но уже хотят юзать редакторы форм.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
17896 / 13992 / 5345
Регистрация: 17.03.2014
Сообщений: 28,648
Записей в блоге: 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,253
Записей в блоге: 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
17896 / 13992 / 5345
Регистрация: 17.03.2014
Сообщений: 28,648
Записей в блоге: 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
17896 / 13992 / 5345
Регистрация: 17.03.2014
Сообщений: 28,648
Записей в блоге: 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
17896 / 13992 / 5345
Регистрация: 17.03.2014
Сообщений: 28,648
Записей в блоге: 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
17896 / 13992 / 5345
Регистрация: 17.03.2014
Сообщений: 28,648
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели. Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка: «Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер