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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обработка события некоторого класса в форме 
:(
    Опции темы
Dexx
Дата 5.3.2007, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Допустим мне нужно обрабатывать события происходящие в классе, приведенном ниже.

using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsApplication7
{
    class Foo
    {
        public void MyFunction(int var)
        {         
        if ((var-2)==0)
            {
            //Вызвать событие
            }
        }
    }

}

Ну допустим я нажимаю кнопку на форме, в обработчике кнопки, что то  типа " .... .MyFunction(2);"
т.е.  вызывается событие! 
Как мне отследить его в форме.

З.Ы. Может я, что то не понятно спрашиваю?
Меня интересует что то типа  RaiseEvent из VB6, и как это обрабатывать?





Это сообщение отредактировал(а) Dexx - 5.3.2007, 20:55


--------------------

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


Эксперт
****


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

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



Цитата(Dexx @  5.3.2007,  20:47 Найти цитируемый пост)
Может я, что то не понятно спрашиваю?

Ага. Хотелось бы поточнее увидеть, что жмем, что нужно обрабатывать... Трудно понять все логику программы по одному методу, указанному выше.


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


Опытный
**


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

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



Не знаю как сказать!

Жмем кнопку на форме, которая вызывает функцию в классе.
И результат выпонения я получаю, ни как результат от функции!
А результат, я получаю в обработчике события некоторого класса!

Могу дать исходники, которые показывают, как это реализуется в VB6! Если это поможет!

Ну, т.е. когда объевляешь класс пишешь  With Events? 

Это сообщение отредактировал(а) Dexx - 5.3.2007, 22:04


--------------------

PM   Вверх
Gelis
Дата 5.3.2007, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Dexx @  5.3.2007,  21:59 Найти цитируемый пост)
Жмем кнопку на форме

Ну во первых если ты хочешь использовать кнопку на форме, то нужно это делать в классе производном от Form
Код

using System.Windows.Forms;
public class MainForm:Form
{
     private Button myButton;
     public MainForm()
     {
          //создаем кнопку
          myButton=new Button();
          //указываем положение верхнего правого угла
          myButton.Location=new Point(10,10);
          // задаем размер кнопки
          myButton.Size=new Size(34,15);
          //добавляем контрол в коллекцию контролов формы
          this.Controls.Add(myButton);
          //добавляем обработчик события
          myButton.Click+=new EventHandler(MyClick);
      }
      //обработчик события
      private void MyClick(object sender, EventArgs e)
      {
           //sender-объект породивший событие, т.е. наша кнопка, так что спокойно пишем
           Button local=(Button)sender;
           //e-аргумент зависящий от события, в данном случае не несет никакой смысловой нагрузки,
           //предназначен для однообразия
       }

}




Это сообщение отредактировал(а) Gelis - 5.3.2007, 22:29
PM MAIL   Вверх
bend0r
Дата 5.3.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



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

Код

    class Foo
    {

        public Foo()
        { 
            //где имено у тебя обработчики я так и не понел.
            //предположим что в этом классе
            Sob += One;
            Sob += Two;
        }

        //обьевляем событие.в даном случии используется встроеный делегат.
        //юзаешь какой тебе надо
        public static event EventHandler Sob;

        //твоя функция запускающая события
        public void MyFunction(int var)
        {
            if ((var - 2) == 0)
            {
                if (Sob != null)
                {
                    Sob(this, EventArgs.Empty);
                }
            }
        }

        private void One(object obj, EventArgs e)
        { 
            MessageBox.Show("первый обработчик");
        }

        private void Two(object obj, EventArgs e)
        {
            MessageBox.Show("второй");
        }
   }


в форме
Код

private void button1_Click(object sender, EventArgs e)
        {
            Foo foo = new Foo();
            foo.MyFunction(2);
        }


Это сообщение отредактировал(а) bend0r - 6.3.2007, 00:39
PM MAIL   Вверх
Naum
Дата 6.3.2007, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

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



Цитата(bend0r @  6.3.2007,  00:38 Найти цитируемый пост)
//где имено у тебя обработчики я так и не понел.
//предположим что в этом классе

По-моему в этом и был  вопрос. Как из другого класса реагировать на события данного класса?
Dexx, если я угадал вопрос, то bend0r, впринципе ответил на него. Просто обработчики создаешь в другом классе.


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

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


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

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


 




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


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

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