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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по listView 
:(
    Опции темы
oleeg
Дата 15.7.2008, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 27.11.2006

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



Всем доброго времени суток, a вернее ночи, по ночам я работаю )
Закрались у меня пару вопросиков.
1)    Значит так. Есть у нас , допустим, кнопка.Вот код ее обработчика

Код

        private void buttonlAddTextInRichTextBox_Click(object sender, EventArgs e)
        {
            textFromRichTextbox = richTextBoxAddTextInRichTextBox.Text;
            this.Close();
        }

Что там, в общем-то неважно.
Так вот, добавляю я контекстное менб на форму и хочу, чтобы , допустим, один из пунктов этого контекстного меню дублировал эту кнопку, так сказать. Я пишу обработчик
Код

private void ToolStripMenuItemAdd_Click(object sender, EventArgs e)
        {
            this.buttonlAddTextInRichTextBox.Click += new EventHandler(buttonlAddTextInRichTextBox_Click);
        }

Но это не работает, зотелось бы знать, почему? Конечно, я понимаю, что можно сделать так
Код

private void ToolStripMenuItemAdd_Click(object sender, EventArgs e)
        {
textFromRichTextbox = richTextBoxAddTextInRichTextBox.Text;
            this.Close();

        }

Но это как-то неизящно, что ли. Может я чего-то недопонимаю, но все же, почему не работает?
2) Если несложно, объясните вкратце, что за загадочное свойство – Tag называеться. 
Только не надо посылать в МСДН и т д.

Заранее спасибо.

PM MAIL   Вверх
Idsa
Дата 15.7.2008, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



Цитата(oleeg @  15.7.2008,  05:10 Найти цитируемый пост)
о это не работает, зотелось бы знать, почему?

Ваш код добавляет еще один метод, который будет выполняться при щелчке по кнопке. Кстати метод тот же самый, так что действия будут повторяться дважды.
Чтобы при щелчке по элементу меню выполнялся тот же код, что и в обработчике щелчка по кнопке, нужно из обработчика щелчка по меню вызвать метод обработчика щелчка по кнопке.
public void ToolStripMenuItemAdd_Click(object sender, EventArgs e)
{
 this.buttonlAddTextInRichTextBox_Click(sender, e);
}

Цитата(oleeg @  15.7.2008,  05:10 Найти цитируемый пост)
Если несложно, объясните вкратце, что за загадочное свойство – Tag называеться. 

Tag - свойство, которое позволяет хранить в нем любую вспомогательную информацию (т. к. тип object). Работа самих контролов от этого свойства не зависит: им оперует программист, занося и считывая данные.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
oleeg
Дата 15.7.2008, 01:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 27.11.2006

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



Idsa
спасибо!
PM MAIL   Вверх
QryStaL
Дата 15.7.2008, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

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



Цитата(Idsa @  15.7.2008,  01:19 Найти цитируемый пост)
 this.buttonlAddTextInRichTextBox_Click(sender, e);

лучше так
Код

this.buttonlAddTextInRichTextBox.PerformClick();


Это сообщение отредактировал(а) QryStaL - 15.7.2008, 11:06


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
Idsa
Дата 15.7.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

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



Цитата(QryStaL @  15.7.2008,  15:06 Найти цитируемый пост)
лучше так

Согласен. Но вызов метода - более общее решение: не у всех же контролов и не для всех событий есть подобные методы.
А если уж говорить о том, что лучше, а что хуже... то именно для таких случаев (когда одно и то же действие нужно выполнить и щелчком по кнопке, а щелчком в контекстном меню, и щелкчком...) существует паттерн "команда".
В 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


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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