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

Программное создание контролов и работа с ними

10.01.2012, 20:19. Показов 2441. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема такая: контролы создаются программно при выполнении функции "treeView1_AfterSelect". Обращение к этим контролам из других функции невозможно. По моей логике обращение к контролам производятся после их создания, но видимо Visual Studio со мной соглашаться не хочет... что можно придумать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.01.2012, 20:19
Ответы с готовыми решениями:

Программное создание контролов
Вопрос к знатокам. Если на форме динамически создается индексированный набор контролов, например, Label, скажем так: Private Sub...

Программное создание и получение событий от любых создаваемых контролов
Люди интересная задача, просмотрел по форуму есть 2 или 3 топика по этому вопросу, но приведены частные решения только для определенных...

Создание форм и работа с ними
Ребят помогите только начал изучать Си# и вот не могу кое-что сделать а именно: у менять есть форма1 и на ней кнопка "ок".....

7
 Аватар для ][irurg
181 / 180 / 38
Регистрация: 16.06.2010
Сообщений: 511
12.01.2012, 23:15
Не соглашается, потому что не правильно просишь
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
13.01.2012, 00:30
Цитата Сообщение от KA4AH Посмотреть сообщение
что можно придумать?
показать для начала код, который ты уже придумал
0
0 / 0 / 1
Регистрация: 06.12.2011
Сообщений: 13
13.01.2012, 11:51  [ТС]
Вот создание (кусок):
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
 public void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            switch (treeView1.SelectedNode.Name)
            {
                case "newGBL":
                    {
                        panel1.Controls.Clear();
 
                        Button createButton = new Button();
                        TextBox fileNameTextBox = new TextBox();
                        Label label1 = new Label();
                        CheckBox connectCheckBox = new CheckBox();
 
                        // 
                        // label1
                        // 
                        label1.AutoSize = true;
                        label1.Location = new Point(6, 13);
                        label1.Name = "label1";
                        label1.Size = new Size(95, 13);
                        label1.TabIndex = 0;
                        label1.Text = "Название файла ";
                        // 
                        // fileNameTextBox
                        // 
                        fileNameTextBox.Location = new System.Drawing.Point(9, 29);
                        fileNameTextBox.Name = "fileNameTextBox";
                        fileNameTextBox.Size = new System.Drawing.Size(100, 20);
                        fileNameTextBox.TabIndex = 1;
                        // 
                        // createButton
                        // 
                        createButton.Location = new Point(9, 78);
                        createButton.Name = "createButton";
                        createButton.Size = new Size(75, 23);
                        createButton.TabIndex = 2;
                        createButton.Text = "Создать";
                        createButton.UseVisualStyleBackColor = true;
                        createButton.Click += new System.EventHandler(this.createButton_Click);
                        // 
                        // connectCheckBox
                        // 
                        connectCheckBox.AutoSize = true;
                        connectCheckBox.Location = new Point(9, 55);
                        connectCheckBox.Name = "connectCheckBox";
                        connectCheckBox.Size = new Size(172, 17);
                        connectCheckBox.TabIndex = 3;
                        connectCheckBox.Text = "Подключить после создания";
                        connectCheckBox.UseVisualStyleBackColor = true;
 
                        panel1.Controls.Add(label1);
                        panel1.Controls.Add(fileNameTextBox);
                        panel1.Controls.Add(connectCheckBox);
                        panel1.Controls.Add(createButton);
 
                        break;
                    }
А вот тут попытка обращения:
C#
1
2
3
4
private void createButton_Click(object sender, EventArgs e)
        {
            fileNameTextBox.Text = "бла бла бла";
        }
ну вот так то, так хотлось бы....

пока реализовал так:
C#
1
TextBox TB = (TextBox)panel1.Controls["fileNameTextBox"];
но мне кажется это не очень нормально... вот и думаю, может мне кто-то подскажет более человечный способ.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
13.01.2012, 12:11
Проблема заключается в незнании темы "область видимости переменных"
0
0 / 0 / 1
Регистрация: 06.12.2011
Сообщений: 13
13.01.2012, 12:14  [ТС]
а я разве в этом случае не по имени контрола обращаюсь, а по имени переменной в которой хранится контрол?
0
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
13.01.2012, 13:36
KA4AH, ты fileNameTextBox создаёшь в обработчике события treeView1_AfterSelect. treeView1_AfterSelect - это по сути метод, и получается, что ты внутри метода создаёшь переенную. nio, тебе написал про область видимости переменных. Так вот, твоя переменная fileNameTextBox и будет видна только внутри метода treeView1_AfterSelect.
Если ты хочешь обращаться к переменной, а не к контролу по имени, то создавай эти переменные не в каком-то конкретном методе, а в коде самой формы.
0
0 / 0 / 1
Регистрация: 06.12.2011
Сообщений: 13
13.01.2012, 13:38  [ТС]
Понял, спасибо всем кто откликнулся... вопросов больше нет...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2012, 13:38
Помогаю со студенческими работами здесь

Создание кнопок и работа с ними
1. как мне создать программно кнопки, присвоить им имена в дальнейшем чтоб можно было работать с ними, что-то типа этого: For i=1 to 10 ...

Создание управляющих регистров и работа с ними
Добрый день! Для одного проекта заказал себе STMF3Discovery, пока довезут развлекаюсь со старой STMVLDiscovery. Собственно по ТЗ есть...

Динамическое создание компонентов и работа с ними
Вопрос по VBasic 2013 : возможно ли в этой среде программно создавать множество меток(label) , чтобы менять их атрибуты и удалять все...

Программное удаление контролов
попробовал так: при инициализации формы создается контролс "TextLabel", после, перед изменением индекса TabStrip1 поставил строчку...

Программное удаление контролов
Знатоки, подскажите, пожалуйста, можно ли программно удалять контролы, например textbox-ы с формы? И если можно то как?


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru