![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| neprofi |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 26.3.2008 Репутация: нет Всего: нет |
хелп! Мне необходимо при нажатии кнопки на форме Form3 вызвать событие сохранитьToolStripMenuItem_Click , которое прописано для пункта меню Form1
форма 3
|
||||
|
|||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
Ты наступил на классические ламерские грабли...
Запомни: никогда не помещай бизнес-логику в обработчиках событий, вместо этого вызывай из них методы классов, не связанных с формами... P.S. Почитай статью про антипаттерны, тебе будет полезно... -------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| neprofi |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 26.3.2008 Репутация: нет Всего: нет |
Хорошо, так нельзя. А что же мне делать? Прописать все для "сохранить" в "батон1". Это ведь столько лишней писанины! Неужели в C# нет ничего подобного ссылкам на функцию?
|
|||
|
||||
| WarHog |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.10.2007 Где: Воронеж Репутация: нет Всего: 2 |
Так можно, но так не делается. Если не хочешь последовать совету source777, то можешь сделать так
Только в "private void сохранитьToolStripMenuItem_Click(object sender, EventArgs e)" измени private на public. Только я бы так не делал
Есть делегаты - безопасные объекты-обертки. --------------------
|
||||
|
|||||
| Moid |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 27.3.2006 Репутация: нет Всего: 3 |
а делается так:
затем по нажатию кнопки пишешь так:
И во всех остальных случаях где нужно вызвать сохранение, вызываешь не buttonSave_Click, а SaveInfo() -------------------- "Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн |
||||||
|
|||||||
| WarHog |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 122 Регистрация: 20.10.2007 Где: Воронеж Репутация: нет Всего: 2 |
Moid, это почти то же, что советовал source777, а ведь автору топика это не подходит
--------------------
|
|||
|
||||
| Moid |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 27.3.2006 Репутация: нет Всего: 3 |
Автор видимо еще не понял, что на самом деле так будет удобнее. Лучше сейчас написать несколько дополнительных строк, чем потом копаться во всей этой каше. Ну, а если всетаки хочется сэкономить на коде, то вот так можно сделать не написав ни одной строчки кода: В окне "Properties" кнопки выбираем событие "Click". Нажимаем на появившийся треугольничек и выбираем событие меню "saveToolStripMenuItem_Click". -------------------- "Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн |
||||
|
|||||
| source777 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1878 Регистрация: 12.3.2007 Репутация: 3 Всего: 56 |
Это всё конечно хорошо, но не помешало бы дать обработчику события более внятное имя, типа SaveCommandHandler, а из этого обработчика уже вызвать метод state.SaveInfo(), выполняющий сохранение, таким образом мы получим двойной выигрыш: 1) операция сохранения не будет иметь жёсткой привязки к форме 2) исключим дублирование кода в обработчиках событий, которые имеют одинаковый смысл, но относятся к разным контролам. Добавлено через 1 минуту и 47 секунд
-------------------- Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте |
|||
|
||||
| Moid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 396 Регистрация: 27.3.2006 Репутация: нет Всего: 3 |
Если автору жалко расходовать 2-3 строчки на создание метода, то о вынисения метода в отдельный класс я не осмелиться предложить -------------------- "Всё должно быть сделано настолько простым, насколько это возможно, но не проще" (с) А.Эйнштейн |
|||
|
||||
| QryStaL |
|
|||
![]() Intellectual feast ![]() ![]() Профиль Группа: Участник Сообщений: 914 Регистрация: 30.11.2005 Репутация: 10 Всего: 32 |
source777 говорит о разделении слоев абстракции - Business layer и Presentation layer. В эту сторону автору и следует копать...
-------------------- I don't need a reason being who I am... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [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. |