![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| oleeg |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 27.11.2006 Репутация: нет Всего: нет |
Всем доброго времени суток, a вернее ночи, по ночам я работаю )
Закрались у меня пару вопросиков. 1) Значит так. Есть у нас , допустим, кнопка.Вот код ее обработчика
Что там, в общем-то неважно. Так вот, добавляю я контекстное менб на форму и хочу, чтобы , допустим, один из пунктов этого контекстного меню дублировал эту кнопку, так сказать. Я пишу обработчик
Но это не работает, зотелось бы знать, почему? Конечно, я понимаю, что можно сделать так
Но это как-то неизящно, что ли. Может я чего-то недопонимаю, но все же, почему не работает? 2) Если несложно, объясните вкратце, что за загадочное свойство – Tag называеться. Только не надо посылать в МСДН и т д. Заранее спасибо. |
||||||
|
|||||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 6 Всего: 62 |
Ваш код добавляет еще один метод, который будет выполняться при щелчке по кнопке. Кстати метод тот же самый, так что действия будут повторяться дважды. Чтобы при щелчке по элементу меню выполнялся тот же код, что и в обработчике щелчка по кнопке, нужно из обработчика щелчка по меню вызвать метод обработчика щелчка по кнопке. public void ToolStripMenuItemAdd_Click(object sender, EventArgs e) { this.buttonlAddTextInRichTextBox_Click(sender, e); }
Tag - свойство, которое позволяет хранить в нем любую вспомогательную информацию (т. к. тип object). Работа самих контролов от этого свойства не зависит: им оперует программист, занося и считывая данные. |
|||
|
||||
| oleeg |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 70 Регистрация: 27.11.2006 Репутация: нет Всего: нет |
Idsa
спасибо! |
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
лучше так
Это сообщение отредактировал(а) QryStaL - 15.7.2008, 11:06 -------------------- I don't need a reason being who I am... |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 6 Всего: 62 |
Согласен. Но вызов метода - более общее решение: не у всех же контролов и не для всех событий есть подобные методы. А если уж говорить о том, что лучше, а что хуже... то именно для таких случаев (когда одно и то же действие нужно выполнить и щелчком по кнопке, а щелчком в контекстном меню, и щелкчком...) существует паттерн "команда". В Delphi этот паттерн реализовывался через ActionList. В WPF это называется Commands. К сожалению, WinForms в стандартной поставке не содержит ничего подобного (во времена появления WinForms для многих это было большой неожиданностью). Помнится мне, где с годик назад кто-то пришел на форум и спросил, нет ли чего-нибудь подобного ActionList в .NET. Так вот тогда человеку посоветовали воспользоваться сторонней реализацией ActionList: http://www.codeproject.com/KB/miscctrl/actionlist.aspx. Думаю, под WinForms именно использование стороннего ActionList будет действительно лучше вызовов методов ручками или, того хуже, копипаста. Добавлено через 8 минут и 55 секунд Сейчас глянул ActionList на codeproject... а он не обновлялся с 2002 года. Вот еще одна реализация ActionList. Судя по всему, более серьезная разработка. Это сообщение отредактировал(а) Idsa - 15.7.2008, 11:46 |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | .NET для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |