| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Динамические кнопки |
| Автор: Kefir 6.3.2006, 11:11 |
| Задача такова - из БД (мускул) выбираются категории (например: Рестораны, Бары, Клубы, ...). Далее программа должна вывести эти категории в виде кнопок (можно и не кнопок - главное чтобы выглядело как кнопки 1. Как сделать генерацию кнопок? 2. Как сделать так, чтобы нажатия на кнопки имели свой собственный эвент? |
| Автор: Exception 6.3.2006, 11:34 | ||
Теоретически должно работать.
|
| Автор: Kefir 6.3.2006, 11:46 |
| Гм... я сейчас не могу проверить, но ведь с таким кодом у меня будет куча кнопок b с обработчиком клика? как их различать-то?.. |
| Автор: chwind 6.3.2006, 12:05 | ||
| System::Object * sender в Обработчике преобразовывай sender обратно к бутону и анализируй его свойство Текст или лучше записывай в момент создания кнопок что нибудь осмысленое в Tag и потом амнализируй это свойство
Код писал для с++, думаю для шарпа приведение типов будет выглядеь попроще |
| Автор: Exception 6.3.2006, 12:28 | ||
|
| Автор: Kefir 6.3.2006, 12:36 |
| Exception, спасибо... идкю я понял... но теперь другой вопрос - а если у меня две такие кнопки с одинаковым текстом - то есть ли куда записать, например, id записи в БД (в классе кнопки) или мне надо будет расширять этот класс чтобы добавить такую фичу? Я просто назначение многих параметров в кнопке не знаю - запишу ещё чего-нибудь не так/не туда... |
| Автор: 4YBAK 8.3.2006, 18:41 | ||
У меня чет никак не хочет работать:
Мне надо в зависимости от того, какое число в Tag у кнопки, выполнять то или иной код... |
| Автор: Kefir 8.3.2006, 19:25 |
| 4YBAK, попробуй к int привести. |
| Автор: 4YBAK 8.3.2006, 20:42 |
| Стопудова! Работает! Сорри за небольшой офтоп: чем отличается приведение типа c помощью (int) от Convert.ToInt32() Пока не ответите, заснуть не смогу )) |
| Автор: 4YBAK 8.3.2006, 22:11 |
| Тогда для чего это вообще было сделано? 2 записи одного и того же действия? |
| Автор: Дрон 8.3.2006, 22:42 | ||||||
| Нет!!! Это принципиально разные действия. Тов. Exception, зачем вы человека с толку сбиваете? Это ж не VB, а C#. (int) это приведение типа. Т.е. если у тебя есть переменная в которой хранится число, но её тип не int, а, например, object, то можно сделать так:
Convert.ToInt32 используется, когда ты не уверен, что там хранится число. Например если там строка, то ты просто так привести её к int не можешь.
А вот если написать:
То всё будет хорошо. Будет вызван метод Int32.Parse(str); и сделан разбор строки. Короче, (int) это уточнение, что у тебя там не просто так, а именно int. А Convert.ToInt32 -- это преобразование данных любого типа в int. |
| Автор: Exception 9.3.2006, 00:05 |
| Спасибо, что указал на ошибку. Исправлюсь |
| Автор: 4YBAK 9.3.2006, 02:43 |
| Дрон, Понял! Пасиба! Т.е. в принципе надежнее юзать Convert.ToInt32() нежели (int). Т.к. в первом случае уж точно никаких ошибок не будет? И вопрос номер последний: Разница между Int32.Parse(str) и Convert.ToInt32() |
| Автор: Дрон 9.3.2006, 09:51 |
| Вот тут разницы уже практически нет Convert.ToInt32 вызывает для строк метод Int32.Parse Но лучше пользоваться Convert |