Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/23: Рейтинг темы: голосов - 23, средняя оценка - 4.74
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
1
.NET 4.x

Динамическое создание компонентов

28.11.2011, 12:34. Показов 4644. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
подскажите вот у меня такая проблема, надо вобщем написать программу интерфейс которой представляет собой мастер со сложным развитлением и при этом мне бы хотелось пользоватся всеми примуществами рти вот есть блок схема типо моего проекта. задача проекта загрузка информации с фтп сервера а точнее это собственый установщик всех моих программ.

но я не знаю как компоненты расположить с помощью рти (палитры компонентов) я приходимец со среды дельфай. и я решил писать все динамически, в том числе и компоненты. а как вы создает сложные развитления. для меня очень важно маленький размер. ВЕДЬ ХОРОШИЙ ПРОГРАМИСТ ДОЛЖЕН ПИСАТЬ МАЛЕНЬКИЕ ПРОГРАММЫ ВЕРНО!!!

Добавлено через 50 минут
подскажите как сократить код в с#

например у меня такой код:

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
51
52
53
54
 //здесь происходи создание основных компонентов [кнопки: справка, <назад, далее>, отмена]
 
                Button buttonHelp = new Button();
                Button buttonBack = new Button();
                Button buttonNext = new Button();
                Button buttonClose = new Button();
                Label  Labels1 = new Label();
                Label  Labels2 = new Label();
 
                PictureBox PictureBox1 = new PictureBox();
 
                buttonHelp.Text = "Справка";
                buttonBack.Text = "<Назад";
                buttonNext.Text = "Далее>";
                buttonClose.Text = "Отмена";
 
                buttonHelp.Location = new Point(12, 296);
                buttonBack.Location = new Point(250, 296);
                buttonNext.Location = new Point(331, 296);
                buttonClose.Location = new Point(412, 296);
 
                Labels1.Size = new Size(317,308);
                Labels1.Location = new Point(170,9);
                Labels1.Text = "Вас приветствует программа установки Install Sheld";
                Labels1.AutoSize = false; 
                Labels1.Font = new Font(Labels1.Font, Labels1.Font.Style | FontStyle.Bold);
                //размер шрифта на 11.25
 
                Labels2.Size = new Size(317, 308);
                Labels2.Location = new Point(170, 59);
                Labels2.Text = "Программа установки установит на ваш компьютер программу, *Cправочник радиолюбителя*";
                Labels2.AutoSize = false;
 
                buttonHelp.FlatStyle = FlatStyle.Flat;
                buttonBack.FlatStyle = FlatStyle.Flat;
                buttonNext.FlatStyle = FlatStyle.Flat;
                buttonClose.FlatStyle = FlatStyle.Flat;
 
                this.Controls.Add(buttonHelp);
                this.Controls.Add(buttonBack);
                this.Controls.Add(buttonNext);
                this.Controls.Add(buttonClose);
                this.Controls.Add(PictureBox1);
                this.Controls.Add(Labels1);
                this.Controls.Add(Labels2);
 
                buttonHelp.Click += new EventHandler(buttons_help);
                buttonBack.Click += new EventHandler(buttons_Back);
                buttonNext.Click += new EventHandler(buttons_Next);
                buttonClose.Click += new EventHandler(buttons_Close);
 
                pictureBox1.Location = new Point(-1, -1);
                //pictureBox1.Size.Height = 150;                
            }
также в дельфай был оператор который мог сокращать код например
Delphi
1
2
3
  comboBox1.item.add('бла бла');
  comboBox1.item.add('бла бла');
  comboBox1.item.add('бла бла');
но это можно написать сокращенно так:

Delphi
1
2
3
4
5
6
 with combobox1 do
begin
  item.add('бла бла');
  item.add('бла бла');
  item.add('бла бла');
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2011, 12:34
Ответы с готовыми решениями:

Динамическое создание компонентов в форме с AutoScroll = true
Всем привет. В моей программе предусмотрено динамическое создание трех полей ввода с тремя...

Разработка приложений с использованием стандартных и дополнительных компонентов. Динамическое создание компонентов.
Здравствуйте! Помогите мне, пожалуйста. Условие задачи состоит в следующем: из списка выбираю...

Динамическое создание компонентов и подписка их на события
Добрый день! Я начинающий программист, пытаюсь разобраться с созданием массивов control-ов и ихних...

Динамическое создание компонентов и подписка их на события 2
Добрый день! В процессе работы возник ещё один вопрос. Программа у меня запускается, но при...

7
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
28.11.2011, 12:43 2
C#
1
2
3
4
5
6
7
this.Controls.Add(buttonHelp);
this.Controls.Add(buttonBack);
this.Controls.Add(buttonNext);
this.Controls.Add(buttonClose);
this.Controls.Add(PictureBox1);
this.Controls.Add(Labels1);
this.Controls.Add(Labels2);
C#
1
2
3
4
this.Controls.AddRange(new Control[] {buttonHelp, 
                                  buttonBack, buttonNext, 
                                  buttonClose, PictureBox1,
                                  Labels1, Labels2});
Добавлено через 2 минуты
Delphi
1
2
3
4
5
6
with combobox1 do
begin
  item.add('бла бла');
  item.add('бла бла');
  item.add('бла бла');
end;
C#
1
2
3
4
5
comboBox1.Items.AddRange(new string[]{
    "бла-бла",
    "бла-бла",
    "бла-бла"
});
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
28.11.2011, 14:46  [ТС] 3
Цитата Сообщение от Петррр Посмотреть сообщение
C#
1
2
this.Controls.Add(buttonHelp);
                  });
А подскажите такой момент, например в дельфай есть компонент TFrame и если их накладывать на форму несколько штук а потом управлять свойства visaible то можно организовать достаточно сложную форму ввода данных а в С# есть что то наподобии или приходиться такие сложные интерфейсы прописывать динамически?

Добавлено через 2 минуты
у меня возникла проблемма, код написан для создания компонентов а вот потом написал пару строк и некоторые компоненты провали (кнопки далее, отмена, назад) почему?

вот код
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
51
52
53
54
55
56
57
58
59
60
61
               //здесь происходи создание основных компонентов [кнопки: справка, <назад, далее>, отмена]
 
                Button buttonHelp = new Button();
                Button buttonBack = new Button();
                Button buttonNext = new Button();
                Button buttonClose = new Button();
                Label Labels1 = new Label();
                PictureBox PictureBox1 = new PictureBox();
 
                buttonHelp.Text = "Справка";
                buttonBack.Text = "<Назад";
                buttonNext.Text = "Далее>";
                buttonClose.Text = "Отмена";
 
                buttonHelp.Location = new Point(12, 296);
                buttonBack.Location = new Point(250, 296);
                buttonNext.Location = new Point(331, 296);
                buttonClose.Location = new Point(412, 296);
 
                Labels1.Size = new Size(317, 308);
                Labels1.Location = new Point(170, 9);
                Labels1.Text = "Вас приветствует программа установки Install Sheld";
                Labels1.AutoSize = false;
                Labels1.Font = new Font(Labels1.Font, Labels1.Font.Style | FontStyle.Bold);
                //размер шрифта на 11.25
 
                Label Labels2 = new Label();
                Labels2.Size = new Size(317, 308);
                Labels2.Location = new Point(170, 59);
                Labels2.Text = "Программа установки установит на ваш компьютер программу, *Cправочник радиолюбителя*";
                Labels2.AutoSize = false;
                this.Controls.Add(Labels2);
 
                Label Labels3 = new Label();
                Labels3.Size = new Size(236, 13);
                Labels3.Location = new Point(174, 251);
                Labels3.Text = "Для продолжения нажмите кнопку *Далее>*";
                Labels3.AutoSize = false;
 
 
 
                buttonHelp.FlatStyle = FlatStyle.Flat;
                buttonBack.FlatStyle = FlatStyle.Flat;
                buttonNext.FlatStyle = FlatStyle.Flat;
                buttonClose.FlatStyle = FlatStyle.Flat;
 
                this.Controls.Add(buttonHelp);
                this.Controls.Add(buttonBack);
                this.Controls.Add(buttonNext);
                this.Controls.Add(buttonClose);
                this.Controls.Add(PictureBox1);
                this.Controls.Add(Labels1);
                this.Controls.Add(Labels3);
 
                buttonHelp.Click += new EventHandler(buttons_help);
                buttonBack.Click += new EventHandler(buttons_Back);
                buttonNext.Click += new EventHandler(buttons_Next);
                buttonClose.Click += new EventHandler(buttons_Close);
 
                pictureBox1.Location = new Point(-1, -1);
            }
0
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
28.11.2011, 14:50 4
Цитата Сообщение от n971030 Посмотреть сообщение
А подскажите такой момент, например в дельфай есть компонент TFrame и если их накладывать на форму несколько штук а потом управлять свойства visaible то можно организовать достаточно сложную форму ввода данных а в С# есть что то наподобии или приходиться такие сложные интерфейсы прописывать динамически?
Фреймов из Делфи нету, насколько я знаю, в стандартных элементах платформы Net.
Однако, я делал так. Создавал несколько панелей, заполнял их нужными элементами, заносил эти панели в массив, а потом обращался к ним как к элементам массива. Таким образом можно было скрывать все панели или выводить на передний план нужную.
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
28.11.2011, 15:56  [ТС] 5
Цитата Сообщение от Etrimus Посмотреть сообщение
.
А как с размерами файла, мнебы както поменьше надо. А каким образом можно уменьшить размер исполняемого файлы вы не подскажите?
0
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
28.11.2011, 16:18 6
Цитата Сообщение от n971030 Посмотреть сообщение
А как с размерами файла, мнебы както поменьше надо. А каким образом можно уменьшить размер исполняемого файлы вы не подскажите?
Хм, я читал информацию, что NET-файлы не сжимаются. Можно переносить код в dll-библиотеки, но тогда программа уже не будет состоять из одного файла.
1
188 / 120 / 4
Регистрация: 23.01.2010
Сообщений: 1,320
28.11.2011, 21:17  [ТС] 7
подскажите такой вопрос, как мне построить условие таким образом чтобы
если в процедуру передаеться параметр true то обьекты создаються а если false то обьекты уничтожаються. Проблема не как немогу получить доступ к этим обьектам. Подскажите вот код:
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
public void ВыборПО(bool kill)
        {
            //добавить панель 
            //изменить ее цвет на СontrolDark
            //и на ней распологаються 2 ком. label
 
 
            if (kill == true)
            {
                Label Label1 = new Label();
                Label1.Text = "Каталог программ";
                Label1.Location = new Point(9, 5);
                Label1.Size = new Size(125, 14);
                this.Controls.Add(Label1);
 
                Label Label2 = new Label();
                Label2.Text = "Для продолжения установки, один из доступных продуктов и нажмите кнопку *Далее*";
                Label2.Location = new Point(9, 23);
                Label2.Size = new Size(447, 32);
                this.Controls.Add(Label2);
 
                DataGrid grid1 = new DataGrid();
                grid1.Location = new Point(9, 101);
                grid1.Size = new Size(474, 181);
                //добавить колонки [Программа, Размер, Версия, Популярность]
                //выбор целой строки
                //убрать колонку слева
                this.Controls.Add(grid1);
            }
            else
            {
            // сдесь я хотел прописать код для уничтожения но некак? чета не пойму.
            label1.free;:wall:   
 
 
            }
 
 
 
        }
0
162 / 158 / 19
Регистрация: 22.11.2011
Сообщений: 371
28.11.2011, 22:47 8
Да простят меня модераторы...

Кросспостинг вещь наказуемая... Несколько вопросов в одной теме - тоже.
См. ответ в предыдущей теме.
0
28.11.2011, 22:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.11.2011, 22:47
Помогаю со студенческими работами здесь

Создание собственных компонентов
Здравствуйте, подскажите как можно распределить свойства по группам? Или вовсе скрыть имеющейся...

Создание красивых форм и компонентов!?
Меня уже давно мучает вопрос: как создать необычную форму с необычными компонентами в MS VS. К...

Динамическое создание потоков
Доброго времени суток!!! Нужно в программе создать 25 потоков. Как это сделать динамический, в...

Динамическое создание событий
Здравствуйте. Есть код: Button bt = new Button; for (int i = 0; i &lt; 5;...


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

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