-2 / 24 / 8
Регистрация: 19.02.2012
Сообщений: 436
1

Динамическое создание label из текстового файла построчно

04.01.2018, 05:43. Показов 916. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
            
 
FileInfo myfile = new FileInfo("080.txt");
 
            if (myfile.Exists == false)
            {
                string[] strarray1 = { "0", "0", "0" };
                File.WriteAllLines("080", strarray1);
            }
            else
            {
                StreamReader myreader = new StreamReader("080.txt", Encoding.Default);
                string line;
                while ((line = myreader.ReadLine()) != null)
                {
                    Label label = new Label();
                    label.Text = myreader.ReadLine();
                    this.Controls.Add(label);
                }
В моём коде добавляется только один label с первой строкой. Как необходимо сделать, чтобы автоматически добавлялись последующие label с другим строками. В текстовом файле значения для label с новой строки.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.01.2018, 05:43
Ответы с готовыми решениями:

Чтение текстового файла построчно
Может кто то помочь, а то ничего не получается, может кто то реализовать данный метод, буду очень...

Чтение из текстового файла построчно
Здравствуйте! Имеется текстовый файл: 4 5 3 3 5 0,009 0 0,006 1

Редактирование текстового файла построчно
Есть тектовый файл. В файле находятся строки с именем, фамилией и т.д. При редактировании нужно...

Динамическое создание label
Нужно написать кусок программы, чтобы при нажатии button'а, создалось столько label'ов, сколько...

2
8942 / 4854 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
04.01.2018, 08:58 2
Цитата Сообщение от imcavs™ Посмотреть сообщение
В моём коде добавляется только один label с первой строкой.
нет, добавляются все в соответствии с содержимым файла, но помещаются в одно и то же место. Нужно либо вручную задавать свойство Location для каждой метки, либо использовать контейнер FlowLayoutPanel, который сам расставляет свои контролы.

кроме того, ты неправильно читаешь: будут пропускаться строки через одну. нужно так:
C#
1
2
3
4
5
6
7
8
9
using(var reader = new StreamReader("080.txt", Encoding.Default))
{
    while (!reader.EndOfStream())
    {
        var label = new Label();
        label.Text = myreader.ReadLine();
        this.Controls.Add(label);
    }
}
А ещё лучше вынести в отдельный метод:
C#
1
2
3
4
5
6
7
8
9
10
11
IEnumerable<Label> LabelsFromFile(string path){
    using(var reader = new StreamReader(path, Encoding.Default))
    {
        while (!reader.EndOfStream())
        {
            var label = new Label();
            label.Text = myreader.ReadLine();
            yield return label;
        }
    }
}
и вызывать так:
C#
1
this.Controls.AddRange(LabelsFromFile("080.txt").ToArray());
И, повторю, вместо формы (this.Controls) лучше добавлять контролы в отдельных контейнер на форме FlowLayoutPanel
0
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
04.01.2018, 08:59 3
Цитата Сообщение от imcavs™ Посмотреть сообщение
File.WriteAllLines("080", strarray1);
Замените "080" на "080.txt"

Цитата Сообщение от imcavs™ Посмотреть сообщение
C#
1
2
3
4
5
6
while ((line = myreader.ReadLine()) != null)
 {
Label label = new Label();
 label.Text = myreader.ReadLine();
 this.Controls.Add(label);
}
Вы считываете строчку через раз: один ReadLine в условии цикла, другой - в теле.
Используйте в теле цикла line, который уже прочитан в условии:
C#
1
                   label.Text = line;
иначе в label.Text попадет следующая строка

Цитата Сообщение от imcavs™ Посмотреть сообщение
В моём коде добавляется только один label с первой строкой.
Вы дебажили, сколько раз проходится цикл?
C#
1
this.Controls.Add(label);
они просто могут добавляться и наслаиваться один на место другого, в итоге перекрывая друг друга, т.к. location не указан
0
04.01.2018, 08:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.01.2018, 08:59
Помогаю со студенческими работами здесь

Динамическое создание Label
Нужно создать программу, которая будет добавлять на форму метки с текстом. Местоположение и размеры...

Динамическое создание label-ов
Всем привет. Хочу сделать так, что бы при нажатии кнопки создавался определенный лейб, который...

Динамическое создание Label
При динамическом создание Label-ов, они не видны, я так понял причина в том, что на форме...

Динамическое создание Label?
При таком раскладе все равно не отображается текст Label'а на форме. Почему перед типом Form...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru