Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Игра пятнашки... Дежавю..Помогите с обработкой событий 
:(
    Опции темы
Coocky
Дата 6.4.2005, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



Задали(как и год назад по МФС) написать пятнашки smile mr_DUDA не бей!!!!! smile
Обьясните в пару строк,как написать обработчик для 14 кнопок.Ведь ON_COMMAND_RANGE уже не спасет.. smile
Заранее благодарен.


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
mr.DUDA
Дата 6.4.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Добавляешь на форму 15 кнопок, для каждой из них добавляешь обработчик события Click с ОДНИМ именем, например OnButtonClicked. Обработчик будет использовать sender для определения, какая кнопка нажата:
Цитата
private void OnSomeButtonClicked(object sender, System.EventArgs e)
{
    MessageBox.Show(this, "Нажата кнопка: " + ((Button)sender).Text);
}


Пример формы с 15-ю кнопками и одним общим обработчиком - в файле:

Присоединённый файл ( Кол-во скачиваний: 14 )
Присоединённый файл  TestApp1.zip


--------------------
user posted image
PM MAIL WWW   Вверх
Coocky
Дата 6.4.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: нет
Всего: 62



М-дя....Тяжело переходить...
Код

(this, "Нажата кнопка: " + ((Button)sender).Text);

Вот это совсем убило..


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
mr.DUDA
Дата 6.4.2005, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(Coocky @ 6.4.2005, 16:53)
М-дя....Тяжело переходить...
Код

(this, "Нажата кнопка: " + ((Button)sender).Text);

Вот это совсем убило..

В упор не вижу, что тебя "убило" smile

Наверное, так привык к шарпу, что исходники (свои и чужие) читаются бегло. Ничто, как говорится, не режет глаз (хотя сначала тоже было тяжеловато smile)...


--------------------
user posted image
PM MAIL WWW   Вверх
neutrino
Дата 6.4.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



А какая разница между
Код

((Button)sender).Text


и

Код

(sender as Button).Text



--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
mr.DUDA
Дата 6.4.2005, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



И в первом и во втором примере показано, как преобразовать объект sender к Button. В случае, если sender содержит объект производный от Button, разницы между примерами - никакой.

Различия проявятся только если sender не является объектом Button. В первом примере возникнет исключение InvalidCastException, а во втором примере выражение "sender as Button" даст null, в результате при обращении через точку к свойству Text возникнет исключение NullReferenceException.

Кстати, в мсдн оператор as раскрывается как:
Цитата
expression as type

is equivalent to:

expression is type ? (type)expression : (type)null

И ещё, оператор as игнорирует пользовательские операции преобразования, определённые в классе.

Модератор: Да, и убедительно прошу задавать вопросы каждый в отдельном топике, чтобы народ смог тоже посмотреть на ответы.


--------------------
user posted image
PM MAIL WWW   Вверх
[Last]Wizard
Дата 6.4.2005, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 20.7.2004
Где: Минск, Беларусь

Репутация: 4
Всего: 10



Цитата(neutrino @ 6.4.2005, 17:16)
А какая разница между ...


А разница в том, что если sender - не есть Button, то в первом случае бросится InvalidCastException, а во втором NullReferenceException (так как sender as Button в этом случае будет равно null)

PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0662 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.