Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716

e.Cancel = true, реализовать такое для своего класса с событием

08.02.2013, 17:30. Показов 4828. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые формучане, небходимо добиться такой же функциональности своего события, как например, у Form.FormClosing.
C#
1
2
3
4
    private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
    {
      e.Cancel = true;
    }
Не могу сообразить, что делать в своем классе, что бы реализовать такое.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  class Class1
  {
    public void Action1()
    {
      if (BeforeAction != null)
      {
        //this.BeforeAction(this, new ActionEventArgs(true));
      }
 
      MessageBox.Show("Метод сработал!");
    }
 
    public event EventHandler<ActionEventArgs> BeforeAction;
  }
C#
1
2
3
4
5
6
7
  class ActionEventArgs : CancelEventArgs
  {
    public ActionEventArgs(bool cancelAction)
    {
      this.Cancel = cancelAction;//Cancel унаследовалась от CancelEventArgs
    }   
  }
Как такое реализованно у FormClosing, что бы из обработчка события можно было это событие отменить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.02.2013, 17:30
Ответы с готовыми решениями:

Создание своего Event для своего класса
как создать событие для своего класса? У C# нужно создать свое делегат, потом создать экземпляр этого делегата, и из вне привязать...

Можно ли реализовать Map от своего класса?
Надо сделать что-то подобное, подскажите возможно ли такое и как? public class Main { public static void main(String args) { ...

ListViewItem.Selected -> Cancel=True (проверка перед переходом на новый пункт)
Подскажите пожалуйста, на форме есть список пунктов (ListView) и текстовые поля, которые относятся к этому пункту. Как сделать так (какое...

2
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
08.02.2013, 21:27
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication19
{
    class Program
    {
        static void Main ( string[] args )
        {
            var rng = new RandomNumberGenerator();
            rng.NumberGenerated += rng_NumberGenerated;
            rng.NumberAdded += rng_NumberAdded;
 
            rng.GenerateNumbers( 100 );
 
            rng.RandomList.ForEach( Console.WriteLine );
            Console.WriteLine( "Total numbers: " + rng.RandomList.Count );
            Console.ReadKey();
        }
 
        static void rng_NumberAdded ( )
        {
            Console.WriteLine( "Some number added..." );
        }
 
        static void rng_NumberGenerated ( CancelEventArgs cancelEventArgs )
        {
            if ( cancelEventArgs.GeneratedNumber < int.MaxValue / 2 )
                cancelEventArgs.Cancel = true;
        }
    }
 
    class CancelEventArgs
    {
        internal CancelEventArgs ( int number )
        {
            GeneratedNumber = number;
        }
 
        public int GeneratedNumber { get; private set; }
        public bool Cancel { get; set; }
    }
 
    class RandomNumberGenerator
    {
        public delegate void NumberGeneratedHandler ( CancelEventArgs cancelEventArgs );
 
        public event NumberGeneratedHandler NumberGenerated;
        public event Action NumberAdded;
 
        private readonly List<int> mRandomList = new List<int>();
 
        public List<int> RandomList
        {
            get { return mRandomList; }
        }
 
        public void GenerateNumbers ( int maxCount )
        {
            var rnd = new Random();
 
            for ( int i = 0; i < maxCount; ++i )
            {
                var cancelEventArgs = new CancelEventArgs( rnd.Next() );
                OnNumberGenerated( cancelEventArgs );
 
                if ( cancelEventArgs.Cancel )
                    continue;
 
                mRandomList.Add( cancelEventArgs.GeneratedNumber );
                OnNumberAdded();
            }
        }
 
        protected void OnNumberGenerated ( CancelEventArgs cancelEventArgs )
        {
            if ( NumberGenerated != null )
                NumberGenerated( cancelEventArgs );
        }
 
        protected void OnNumberAdded ( )
        {
            if ( NumberAdded != null )
                NumberAdded();
        }
    }
}
Не использовал классы из WinForms, т.к. в консоли, принцип работы должен быть понятен.
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
09.02.2013, 00:54
Etrimus, ну как пример использовать backgroundWorker, у него есть свойство CancellationPending или как-то так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.02.2013, 00:54
Помогаю со студенческими работами здесь

Реализовать кнопку Cancel
Я уже спрашивал вопрос по этой программе https://www.cyberforum.ru/wpf-silverlight/thread2487359.html Теперь я немного в тупике и не...

При перегрузке оператора для класса не получается использовать имя переменной такое же, как в описании класса
Описал первый класс,затем - описал второй класс, используя первый,и когда начал перезагружать оператор для второго класса, вылезла...

Использование своего объекта своего класса внутри другого
Здравствуйте. Есть класс для работы с матрицами. Все работает. Теперь нужно создать другой класс, где полями будут являться переменные -...

Событие для своего класса
Я зоздал класс TPeople и класс TTrafficlight. Сответственно создал код: type TPeople=class go:Boolean; speed, x, y,...

Editdocument (true) Для Класса Notesdocument ?!
Добрый день. Подскажите, как мне открыть все выделенные документы из вида в режиме &quot;редактируемый&quot; и потом, просто сохранить. ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru