|
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 15
|
||||||
Как избежать кучи копи-паста кода, когда много кнопок с одинаковыми действиями?19.07.2016, 16:58. Показов 2532. Ответов 20
Метки нет (Все метки)
Добрый день!
Есть форма, на ней много текст-боксов и кнопок. Рядом с каждым текст-боксом есть кнопка, которая выполняет для своего текст-бокса функцию увеличения значения в текс-боксе на 1.
например есть пара textBox2 и button2, нужен универсальный код для кнопки button, который будет работать в паре textBox3 и button3, textBox4 и button4 и т.д. Спасибо! Я только начал разбираться с программированием, мало что осознаю в ООП, поэтому если можно, разъясните в ответе что за что отвечает плиз. Заранее благодарен!
0
|
||||||
| 19.07.2016, 16:58 | |
|
Ответы с готовыми решениями:
20
Упрощение кода в случае, когда кнопок много, а процедуры у них схожи Как избежать использования кучи проверок?
|
|
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
|
|
| 19.07.2016, 17:18 | |
|
Почему не использовать вместо этого NumericUpDown?
0
|
|
|
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 15
|
|
| 19.07.2016, 17:27 [ТС] | |
|
Потому что я не могу понять как менять его внешний вид, пытался разобраться, читая на эту тему, но очень сложно пока для понимания....
А потом такой же код, как я спрашиваю, хотел бы применить и к возможности изменения координат этой пары, относительно изменения положения других элементов, иначе там одинакового кода получается целая гора, а отличается в итоге только в имени элемента(разные цифры). Вот и пришла в голову мысль.... Читая про С#, видел слово коллекции, мало чот понял из описания, но вроде как можно все сделать как мне надо. Только вот разобраться одному сложно((
0
|
|
|
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
|
|
| 19.07.2016, 17:32 | |
|
Тогда можно создать UserControl, содержащий текстбокс и кнопку и добавлять его сколько угодно раз на форму.
0
|
|
|
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 15
|
|
| 19.07.2016, 17:35 [ТС] | |
|
это в VS можно сделать? или код писать?
0
|
|
|
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
|
|
| 19.07.2016, 17:41 | |
|
Можно и программно создать, можно и в дизайнере.
Правый клик на имени проекта-Добавить/Создать элемент/Пользовательский элемент управления. Дальше - в дизайнере можно натащить туда любых стандартных контролов и прописать им обработчики событий.
0
|
|
|
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 15
|
|
| 19.07.2016, 17:48 [ТС] | |
|
Накидал, написал, что дальше надо сделать? как-то собрать его и он появится в общем списке??
0
|
|
|
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
|
|
| 19.07.2016, 17:50 | |
|
Да, надо его откомпилировать и добавить в список. Давненько я это делал, щас буду слишком долго вспоминать. Лучше погугли - совсем не сложно.
0
|
|
|
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 15
|
|
| 19.07.2016, 17:52 [ТС] | |
|
Спасибо, попробую!
0
|
|
|
14 / 14 / 1
Регистрация: 21.10.2010
Сообщений: 462
|
||||||
| 19.07.2016, 18:01 | ||||||
|
Можно и в коде конструктора формы написать:
1
|
||||||
|
378 / 375 / 213
Регистрация: 29.03.2013
Сообщений: 867
|
||||||
| 19.07.2016, 18:15 | ||||||
|
Yury_, мне в голову пришел вот какой велосипед: для всех пар кнопка-текстбокс задаете одинаковый номер в свойстве
Tag , то есть для первой кнопки Tag=1 и для соответствующего ей текстбокса Tag=1 , для следующей кнопки и текстбокса Tag=2 и т.д. Добавляете для всех кнопок один и тот же обработчик события Click , назовем его допустим button_Click . И вот такой код обработчика, который наверняка можно улучшить:
1
|
||||||
|
Строитель
|
||||||
| 20.07.2016, 01:00 | ||||||
|
Возьмём вставим на форму Panel (PanelControls) и на нём разместим все textBox'ы и button'ы, а дальше сделает всё этот код.
1
|
||||||
|
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 15
|
||||||
| 20.07.2016, 15:19 [ТС] | ||||||
|
Спасибо, сейчас буду пробовать, а можете пояснения по коду написать?
начиная с foreach, спасибо! Создание userControl кстати не получилось, накидал кнопки, написал их обработчики, перестроил решение, control появился, но на нем ничего не отображается, в чем может быть дело? Добавлено через 43 минуты Возникла ошибка: Необработанное исключение типа "System.NullReferenceException" в WindowsFormsApplication2.exe Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта. Код:
Пишет про то, что ControlPanel (строка 12) возможно имеет значение null Добавлено через 6 минут Можете пояснения по Вашему коду написать? Пожалуйста, про object и так далее....
0
|
||||||
|
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 15
|
|
| 20.07.2016, 16:14 [ТС] | |
|
Нашел в чем проблема, все работает!!!
только значение увеличивается не на 1, а на 2(( а во втором textBox все нормально Добавлено через 41 минуту А другая группа кнопок может по тому же принципу работать с этим же текст-боксом?
0
|
|
|
Строитель
|
||||||
| 20.07.2016, 16:23 | ||||||
|
конечно, к примеру первая группа кнопок называют к примеру button1, 2 и т.д., а вторая группа btn1, 2 и т.д..
в коде есть момент где он просто переименовывает название
0
|
||||||
|
0 / 0 / 0
Регистрация: 19.07.2016
Сообщений: 15
|
|
| 20.07.2016, 17:36 [ТС] | |
|
Nord790, Да, успел разобрать чуть раньше, спасибо. Один момент все-таки.
почему происходит перескакивание на 2??? Сделал вторые кнопки, которые уменьшают на -1, так там вообще теперь на 56 перескакивает! Что делать? Добавлено через 35 минут и кнопки иногда зависимы друг от друга, т.е. пока не нажмешь первую, остальные не работают((((
0
|
|
|
|
||||||
| 20.07.2016, 18:24 | ||||||
0
|
||||||
|
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
|
||||||
| 20.07.2016, 18:36 | ||||||
|
Или с помощью 2-х массивов:
0
|
||||||
|
Строитель
|
||||||
| 20.07.2016, 23:57 | ||||||
Сообщение было отмечено Yury_ как решение
Решение
Вот часть кода
1
|
||||||
| 20.07.2016, 23:57 | |
|
Помогаю со студенческими работами здесь
20
Как избежать попадания в фокус кнопок на форме при нажатии клавиш на клавиатуре? Как избежать тормозов в компьютере, когда происходит поиск информации на hdd?
Как избежать дублирование кода ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи
и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|