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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Замена одного метода на другогой? 
:(
    Опции темы
WaReZMEN
Дата 29.4.2009, 13:19 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Есть два класса первый TButton второй TForm (к названием не предератся суть не вних)
значит у TButton есть метод Click в енм я вызываю метод onMouseClick...
в TForm есть переменная типа TButton и я хочу у этой переменной заменить onMouseClick на DoSamsinc() от формы тоесть получится что когда мы выховим TButton Click сработать должен TForm DoSamsinc
Код


class TButton
    {      

        public void Click(int X, int Y)
        {
            Rectangle Rect = new Rectangle(this.FLeft, this.FTop, this.FWidth, this.FHeight);
            if (Rect.Intersects(new Rectangle(X, Y, 1, 1)))
                this.onMouseClick();
        }

        public void onMouseClick()
        {

        }

    }
}


class TForm
    {      
        TButton button

        public TForm()
        {
             this.button.onMouseClick = DoSamsinc;
        }

        public void DoSamsinc()
        {
          //////что то там
        }

    }
}

 smile 
Всем зарание спасибо!
PM MAIL ICQ   Вверх
Bogdan1024
Дата 29.4.2009, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



не очень понял, но мне кажется что нужно в TButton создать событие и вызывать его в TButton.Click, а в TForm привязать к нему обработчик


--------------------
user posted image
PM MAIL   Вверх
ZmeyNet
Дата 29.4.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 25.1.2008
Где: Belarus, Minsk

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



мои телепатические гены подсказывают ,что кто то не читал про делегаты/события ...

Код

public Action<object,EventHandler> MouseClick;
private void onMouseClick(object sender, EventHandler e)
        {
 if (MouseClick!=null)
            {
                MouseClick(sender, e);
            }
        }
...

  public TForm()
        {
             this.button.MouseClick += DoSamsinc;
        }

только пожалуйста не коверкай названия как например это DoSamsinc вместо DoSomeThing читать неприятно ,если не знаешь языка пиши на том который знаешь студия знает русский .

Это сообщение отредактировал(а) ZmeyNet - 29.4.2009, 14:49
PM MAIL ICQ Skype   Вверх
WaReZMEN
Дата 30.4.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Bogdan1024 ну яб рад но такое прокатывает пока в дельфи...
ZmeyNet у меня нет object и EventHandler у меня приложение консольное... код чито для примера навернео стоило написать вот так 

Цитата

кароче есть у меня два класса назвем их XXXX И YYYYY

у класса YYYYY есть методы calcYYYY и frizeYYYY так вот в методе calcYYYY вызывается frizeYYYY 
у класса XXXX есть энкземпляр класса YYYYY называется он yyyy1 и есть метод  SSSSSS

мне нужно 

сделать так в конструкторе класса XXXX написать следующее this.yyyy1.frizeYYYY = this.SSSSSS


про делегаты читал как юзать тока незнаю...
PM MAIL ICQ   Вверх
PashaPash
Дата 30.4.2009, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

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



WaReZMEN, не поверишь, в классе frizeYYYY надо создать событие frizeYYYY и привязать к нему обработчик SSSSSS. В консольном приложении у тебя есть object и EventHandler, и даже EventArgs. Почитай все-таки про делегаты/события.


--------------------
PM MAIL WWW   Вверх
WaReZMEN
Дата 30.4.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



PashaPash, да уже читаю сижу...
PM MAIL ICQ   Вверх
-Mikle-
Дата 30.4.2009, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



[OFFTOPIC]

Цитата(WaReZMEN @  30.4.2009,  21:09 Найти цитируемый пост)
ZmeyNet у меня нет object и EventHandler у меня приложение консольное

Прикольно, оба они в System, там же где и класс Console  smile  smile 


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
WaReZMEN
Дата 1.5.2009, 07:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



-Mikle-, ну вот всеравно не поиму я нифига ну есть он и что?????? мне что всем методам его приписывать??? что мне в него передовать? у меня приложение на XNA и вообще вопрос был не про ссаобия как там целчек отлавить мне нужно один метод другому присвоить вот и все!
PM MAIL ICQ   Вверх
-Mikle-
Дата 1.5.2009, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



WaReZMEN, да ладно, я все понимаю  smile  Просто шутливо подметил smile 
Делегаты и события, как тебе уже сказали, с ними такое делается. Вот примерчик в помощь:

используя делегат для события:
Код

public class TButton
{
    public event EventHandler DoClick;

    protected virtual void OnDoClick()
    {
        if(DoClick != null)
            DoClick(this, EventArgs.Empty);
    }
}

// .....................
        public TForm()
        {
             this.button.DoClick += DoSamsinc;
        }

        public void DoSamsinc(object sender, EventArgs e)
        {
          //////что то там
        }


Чтобы ты не смущался сильно, EventHandler это соглашение об использовании имен и типов (что-то в этом роде, типа общего стандарта). Для описания событий в .NET принято использовать EvnetHandler или EventHandler<Т>. Эти делегаты описывают методы с двумя параметрами (object, EventArgs), либо (object, Т). Ты можешь нарушать стандарты и использовать любой другой тип делегата при объявлении события, но в скором времени поймешь, что придерживаться стандарта лучше.

Можно использовать делегаты в "чистом" виде:
Код

public class TButton
{
    // можно не EventHandler, а другой тип
    public EventHandler DoClick;

    protected virtual void OnDoClick()
    {
        if(DoClick != null)
            DoClick(this, EventArgs.Empty);
    }
}

// и использовать так:
    this.button.DoClick = DoSamsinc;
// или так:
    this.button.DoClick += DoSamsinc


При использовании свойства (или поля) вроде как нет таких стандартов как с событиями.

И еще, делегат - это тип метода, т.е. описание типов его параметров и возвращаемого значения. Делегаты можно объединять операторами "+" и "+=", и удалять оператором "-" и "-=". Их можно использовать в качестве типа параметра метода, если требуется передать ф-ию в метод.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
WaReZMEN
Дата 1.5.2009, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



-Mikle-, спасибо огромное...
PM MAIL ICQ   Вверх
-Mikle-
Дата 1.5.2009, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Незачто, лишь бы помогло.


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
WaReZMEN
Дата 2.5.2009, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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


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

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


 




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


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

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