Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2016, 14:36   #1
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию Всплывающая подсказка для элементов

Доброго времени дня. Вопрос такой. На форме имеется 30+ textbox-ов, как в цикле можнодля каждого текстбокса вывести свою подсказку.
Знаю что есть такой вариант
Код:
private void textBox3_MouseEnter(object sender, EventArgs e)
        {
           ToolTip.Show("Привет - это твоя первая подсказка", textBox3);
        }
но тут нужно для каждого текстбокса создавать свое событие. Можно ли отработать все одним событием. Подсказки берутся из базы, для каждого текстбокса разная.
qwq вне форума Ответить с цитированием
Старый 13.01.2016, 14:42   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что мешает подписать все текстбоксы на одно и то же событие и использовать sender? (может быть еще имеет смысл в массив/список/Dictionary их запихнуть, смотря какая задача)

Или только на форме в дизайнере кликать научились, а основы C# и WinForms не изучили?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.01.2016, 07:19   #3
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,881
По умолчанию

Выкинуть все 30 текстбоксов с формы и поискать темы на форуме "динамическое создание компонент", соответственно по примеру кода из тех тем сделать массив текстбоксов, дать им тег - индекс элемента массива и дать один обработчик маусэнтера, в котором, полагаясь на массив[тег_сендера], вызывать подсказку.

Тот же ответ, что и у Alex11223, но иными словами, может немного понятней будет, да и найдёте пример кода быстрее.
phomm вне форума Ответить с цитированием
Старый 14.01.2016, 10:14   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а если их 30 особых, а не просто подряд? не думали?
там может быть вроде анкеты например.
вместо уникального обращения, получим обращения по индексам, зачем усложнять себе жизнь?

так что прежде чем советовать динамику, стоит посмотреть исходную задачу.
ибо если у ТС типа списка, это одно, анкета(каждый бокс однозначен и предопределен) иное.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 14.01.2016 в 10:16.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.01.2016, 10:17   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Можно и без тега использовать сам текстбокс/sender в качестве ключа в Dictionary.
А создавать динамически не факт что удобно и нужно автору, если это не какие-то одинаковые текстбоксы в один ряд и т.п.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 14.01.2016, 16:58   #6
qwq
Пользователь
 
Регистрация: 05.11.2009
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а если их 30 особых, а не просто подряд?
Не подумал об этом сразу, нужно было сразу пояснить. Все текстбоксы уникальные. Есть база с эталонными значениями, есть некая анкета из которой в текстбоксы заносятся значения, потом эти значения сравниваются с эталоном. В итоге хотел при наведении на текстбокс чтоб во всплывающей подсказке показывало эталонное значение. Как Вы правильно подметили динамика тут не поможет
qwq вне форума Ответить с цитированием
Старый 14.01.2016, 17:10   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну тогда вам подойдет словарик вида Component=>string
для хранения подсказок, главное тока заполнить верно, и общий обработчик, как и говорили.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 15.01.2016, 06:53   #8
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,881
По умолчанию

Не понимаю, что неправильного в динамике ? Конкретно автору может быть неудобно, допустим (пропустим мысль о неких уникальных боксах при примере кода, в котором текстбокс3), но динамика позволяет сделать всё то же что и человек, вот только цена изменений будет копеечная - можно все настройки выкинуть вовне программы (или константы) и грузить на старте создавая всё без работы мышкой (в случае с внешним хранением, в той же базе, даже без перекомпиляции получится), когда, например, надо отрегулировать ширину или отступы и т.п.
Динамическое создание не значит безликую колонку контролов, всё настраивается, и писать это немногим дольше, чем ручками ворочать по форме при таком количестве. А если нужны изменения, то та цена будет возвращена уже на первом (например, надо в середину добавить бокс, что особенно легко будет при относительном указании координат, тут уж как напишешь; или скрыть часть боксов).
Даже легко взять текущий лейаут (из дизайнер.цс) и конвертнуть его в массив настроек.
Я не агитирую, конкретный случай может не иметь смысла в переделке и словарь - нормальное решение (кроме, конечно, лапши из необходимости добавить все 30 боксов в него при ините формы, или даже если циклом проходить по components то лапшу связки боксов и подсказок при таких именах боксов сделать придётся).
Я бы ратовал хотя бы за переименование боксов так, чтобы в базе можно было чётко указать читаемое имя бокса и подсказку, чтобы эту же лапшу в цикл в программе положить.
К слову - хранение подсказок в базе - уже динамика, моё предложение было лишь довести её до полноты.
phomm вне форума Ответить с цитированием
Старый 15.01.2016, 09:18   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Не понимаю, что неправильного в динамике ? Конкретно автору может быть неудобно, допустим (пропустим мысль о неких уникальных боксах при примере кода, в котором текстбокс3), но динамика позволяет сделать всё то же что и человек, вот только цена изменений будет копеечная - можно все настройки выкинуть вовне программы (или константы) и грузить на старте создавая всё без работы мышкой (в случае с внешним хранением, в той же базе, даже без перекомпиляции получится), когда, например, надо отрегулировать ширину или отступы и т.п.
тогда может вообще все в скрипты выложить? вообще можно будет без исходного кода менять все.
то что бокс не переименнован, это мало о чем говорит.
зачем увеличивать сложность ПО без явного на то смысла? скучно?
дизайнер форм на то и создан чтоб облегчить ее, а не усложнить.
Цитата:
Динамическое создание не значит безликую колонку контролов, всё настраивается, и писать это немногим дольше, чем ручками ворочать по форме при таком количестве. А если нужны изменения, то та цена будет возвращена уже на первом (например, надо в середину добавить бокс, что особенно легко будет при относительном указании координат, тут уж как напишешь; или скрыть часть боксов).
при таком количестве контролов нифига не проще в коде их тормошить массово, этот код потом как бы поддерживать, да через неделю это легко, а через месяц-два? год?
Цитата:
Даже легко взять текущий лейаут (из дизайнер.цс) и конвертнуть его в массив настроек.
часто нужны в ПО эти динамические лэйауты? кроме ПО вида 3DS MAX/Blender/Photoshop? особенно что чаще все же раскладка строгая.
Цитата:
К слову - хранение подсказок в базе - уже динамика, моё предложение было лишь довести её до полноты.
у нас в банке некоторые подсказки берутся из БД только из-за того что они могут динамически меняться(законы ж, распоряжения ЦБ), только не припомню чтоб ради этого они генерили полную динамику.
зачем делать то что не надо? можно уж сразу на HTML/JS перейти клиентский.

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

PS: кстати лэйауты не требуют динамики от слова совсем.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LotusScript всплывающая подсказка для Button MaxCher JavaScript, Ajax 0 06.03.2015 11:34
Всплывающая подсказка Dexes JavaScript, Ajax 5 20.02.2012 15:59
всплывающая подсказка ГОСЕАН Помощь студентам 4 15.11.2011 14:04
Всплывающая подсказка Swatch Microsoft Office Access 1 18.03.2010 18:49
Всплывающая подсказка (С#) Лучик_света Помощь студентам 1 25.10.2008 10:44