Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/55: Рейтинг темы: голосов - 55, средняя оценка - 4.98
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1

Событие при изменении переменной

18.01.2016, 23:19. Показов 10515. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер, пытаюсь разобраться в теме события в C#. В связи с чем прошу помочь.
Во всех примерах событий, которые находил (книжка Шилтд, интернет), события активизируется заранее написанным методом, например так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
delegate void MyEventHandler();
 
class MyEvent {  // класс содержащий событие
    public event MyEventHandler SomeEvent;
 
    public void OnSomeEvent()   { // метод вызывается для запуска события
        if(SomeEvent != null) 
        SomeEvent();
        }
    }
 
class EventDemo {
 
    static void qq ()   {
    Console.WriteLine("Произошло событие");
    }
    
    static void Main()   {
        MyEvent evt = new MyEvent();
 
        evt.SomeEvent += qq;
        evt.OnSomeEvent();  //запустить событие
        
        Console.ReadLine();
    }   
}
Можете ли привести пример, где событие в программе, допустим отслеживает значение переменной? и если эта переменная допустим станет =5, отобразится событие Console.WriteLine("Произошло событие");
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2016, 23:19
Ответы с готовыми решениями:

Сделать так, чтобы при каждом изменении переменной pos вызывалась некоторая сторонняя функция
Нужно сделать так, чтобы при каждом изменении переменной pos вызывалась некоторая сторонняя функция (если быть точным, процедура прорисовки...

Событие при изменении имени процессора (исключить таймер из кода)
static class Program { static void Main() { Application.EnableVisualStyles(); ...

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

4
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
18.01.2016, 23:27
Цитата Сообщение от sysrepos Посмотреть сообщение
Можете ли привести пример, где событие в программе, допустим отслеживает значение переменной? и если эта переменная допустим станет =5, отобразится событие Console.WriteLine("Произошло событие");
Сделайте, чтобы эта переменная менялась только через соответствующее свойство. А в его сеттере вызывайте событие.
0
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
19.01.2016, 00:04  [ТС]
написал так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
delegate void MyEventHandler();
 
class MyEvent {  // класс содержащий событие
    public event MyEventHandler SomeEvent;
 
    public void OnSomeEvent()   { // метод вызывается для запуска события
        if(SomeEvent != null) 
        SomeEvent();
        }
    }
 
class MyClass {
 
    int prop;
    public int MyProp {
        get {
            return prop;
        }
        set {
            prop=value;
            if (prop ==10) {
                Console.WriteLine("переменная = 10");
                //evt.OnSomeEvent();
            }
            
        }
    }
}
    
class EventDemo {
 
    static void qq ()   {
    Console.WriteLine("Произошло событие");
    }
    
    static void Main()   {
 
        MyClass ob = new MyClass();
        ob.MyProp=1;
        Console.WriteLine(ob.MyProp);
        
        ob.MyProp=10;
        Console.WriteLine(ob.MyProp);
        
        MyEvent evt = new MyEvent();
        evt.SomeEvent += qq;
        evt.OnSomeEvent();  //запустить событие
        
        Console.ReadLine();
    }   
}
если расскоментить в сеттере //evt.OnSomeEvent(); будет ошибка
0
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
19.01.2016, 00:23
Эмм, вы что-то вообще не то делаете.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication28
{
    class Program
    {
        class MyClass
        {
            public delegate void MyEventHandler(string message); //сигнатура обработчика, который можно привязать к событию.
            public event MyEventHandler SomeEvent=delegate { }; //собственно событие.
            int prop;
            public int MyProp
            {
                get
                {
                    return prop;
                }
                set
                {
                    prop = value;
                    if (prop == 10)
                    {
                        SomeEvent("переменная = 10"); //тут мы генерируем событие
                    }
 
                }
            }
        }
 
        static void Main(string[] args)
        {
            MyClass obj = new MyClass();
            obj.SomeEvent += x => Console.WriteLine(x);//тут подписались
            obj.MyProp = 10;//тут меняем свойство и событие генерируется
            Console.Read();
        }
    }
}
3
 Аватар для sysrepos
83 / 77 / 30
Регистрация: 08.08.2013
Сообщений: 461
Записей в блоге: 1
19.01.2016, 09:44  [ТС]
ок, спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.01.2016, 09:44
Помогаю со студенческими работами здесь

Как при значении переменной 101 и выше установить значение переменной на 100?
Я в C# новичок. Подскажите пожалуйста, как можно сделать чтобы когда значение переменной было 101 и выше, значение переменной...

Запись в файл при изменении текстбокса
Вообщем нужно сделать так чтобы при каждом переходе на другую страницу в файл прописывался адрес из текстбокса1.Пробовал делать чтобы...

Ошибка при программном изменении прозрачности
Имеется форма, фон на ней чёрный, при попытке изменить прозрачность формы программно (this.Background.Opacity = 50) вылетает ошибка: Не...

Генерация события при изменении свойства
Есть public static class DataProvider. Который явлчется поставщиком данных (он содержит коллекцию из другого класса) т.е. что то типа ...

StackOverflowException при изменении свойства класса
Привет, народ. Простенький класс со свойством, в упор не вижу ошибки. Помогите :) class A { public int workExp { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru