Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
tapinam
21 / 21 / 9
Регистрация: 26.07.2013
Сообщений: 109
1

Обращение из обработчика к кнопкам созданным в разметке

26.07.2013, 14:14. Просмотров 582. Ответов 4
Метки нет (Все метки)

Всем привет.
Нужна помощь.
Есть задача: на экране при нажатии на кнопку "Добавить" - появляются(становятся видимыми) дополнительные кнопки.
Дополнительные кнопки созданы в разметке, сделаны невидимыми. При нажатии на кнопку "добавить" - становится видимой 1 кнопка, при повторном нажатии вторая и т.д. Никак не могу понять, как получить их в обработчике на кнопке "Добавить". Буду рад любой помощи.
Пример кнопок:
HTML5
1
2
3
4
5
6
   <asp:Button ID="Button1" runat="server" Text="текст" Visible="false"
                Style="margin-right: 2%; margin-right: 2%;" Height="70px" Width="15%" Font-Bold="True"
                Font-Size="XX-Large" OnClick="Button_Click" />
            <asp:Button ID="Button2" runat="server" Text="текст" Visible="false"
                Style="margin-right: 2%; margin-right: 2%;" Height="70px" Width="15%" Font-Bold="True"
                Font-Size="XX-Large" OnClick="Button_Click" />
P.S. Обработчик OnClick в кнопках служит для другого, не обращайте на него внимания.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2013, 14:14
Ответы с готовыми решениями:

Обращение к програмно(не в дизайнере) созданным элементам
Label TZtime = new Label();//Создаю новый элемент управления TZtime.Name =...

Как обращаться к динамически созданным кнопкам?
Есть код Private Sub UserForm_Initialize() Dim cmd(n) As...

Как обратиться к динамически созданным кнопкам?
Доброго времени. Создаю неизвестное заранее количество кнопок (напротив...

Как обращаться к созданным в конструкторе кнопкам, как к массиву?
Добрый день. Читал подобную тему с созданием массива элементов программным...

Обращение к кнопкам
Допустим есть большая программа, в ней 3 кнопки в каждой почти весь текст...

4
Wolfdp
846 / 763 / 194
Регистрация: 15.06.2012
Сообщений: 2,977
Записей в блоге: 1
Завершенные тесты: 1
26.07.2013, 14:31 2
Как вариант, хранить коллекцию созданных кнопок и работать с ней.

Второй вариант - хранить индекс (номер) текущей видимой кнопки и по нажатию "добавить" показывать следующую.

Третий - создавать кнопки динамически (по описанию, не ваш случай).
1
tapinam
21 / 21 / 9
Регистрация: 26.07.2013
Сообщений: 109
26.07.2013, 15:43  [ТС] 3
Цитата Сообщение от Wolfdp Посмотреть сообщение
Как вариант, хранить коллекцию созданных кнопок и работать с ней.

Второй вариант - хранить индекс (номер) текущей видимой кнопки и по нажатию "добавить" показывать следующую.

Третий - создавать кнопки динамически (по описанию, не ваш случай).
Спасибо.
Да, третий вариант не подходит, уже пробовал

Склоняюсь к хранению индекса кнопки, но никак не могу додуматься как это сделать, боюсь, что решение на поверхности, а у меня уже просто "глаз замылился"

Добавлено через 1 час 0 минут
Попробовал написать ужасно кривую вещь, хотя бы протестировать работу:
C#
1
2
3
4
5
6
7
8
            if (buttonIterator_j == 5)
            {
                buttonIterator_i++;
                buttonIterator_j = 0;
            }
            Button btn = (Button)Controls[49];
            btn.FindControl("Button_" + buttonIterator_i + "_" + buttonIterator_j);
            buttonIterator_j++;
Суть в том, что кнопки названы Button_1_1, Button_1_2 и т.д.
10 рядов по 5 кнопок, т.е. каждая шестая кнопка начинает новый ряд, для этого добавил глобальные переменные итераторов в класс. buttonIterator_i (ряды), buttonIterator_j (столбцы).

получил - Заданный аргумент находится вне диапазона допустимых значений.

Добавлено через 6 минут
Пересмотрел, подумал, что ошибка может быть в строке id у .FindControl, т.к. итераторы целочисленные, добавил им .ToString(), та же ошибка.
0
Wolfdp
846 / 763 / 194
Регистрация: 15.06.2012
Сообщений: 2,977
Записей в блоге: 1
Завершенные тесты: 1
26.07.2013, 16:12 4
C#
1
2
Button btn = (Button)Controls[49];
btn.FindControl("Button_" + buttonIterator_i + "_" + buttonIterator_j);
ты в кнопке ищешь кнопку? 0_о
0
tapinam
21 / 21 / 9
Регистрация: 26.07.2013
Сообщений: 109
26.07.2013, 16:31  [ТС] 5
Цитата Сообщение от Wolfdp Посмотреть сообщение
C#
1
2
Button btn = (Button)Controls[49];
btn.FindControl("Button_" + buttonIterator_i + "_" + buttonIterator_j);
ты в кнопке ищешь кнопку? 0_о
Нет, написал сначала не то и не исправил сразу. Кнопки на панели находятся, ищу по панели:
C#
1
2
Button btn = (Button)Controls[49];
panel.FindControl("Button_" + buttonIterator_i + "_" + buttonIterator_j);
всё равно выводит исключение. Голова окончательно перестала варить, выводит мне какие-то хаотичные решения.

Добавлено через 5 минут
Сделал следующее:

C#
1
            this.Panel.FindControl("Button_" + buttonIterator_i.ToString() + "_" + buttonIterator_j.ToString()).Visible = true;
начала появляться кнопка, но пока только одна.
Говорю же, голова не варит уже вместо обычного .Visible начал создавать массивы и т.д.
0
26.07.2013, 16:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2013, 16:31

Обращение к кнопкам MessageBox
Доброго времени суток! Хотел бы спросить, как обратиться к кнопкам MessageBox....

Обращение к созданным TextBox
Помогите разобраться. Вот я создаю определенное кол-во textbox(сколько укажет...

Обращение к динамически созданным формам
есть динамически созданные формы (копии главной формы) как обратиться...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru