Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / реализовать событие со свойством Cancel аналогичное FormClosingEventArgs / 7 сообщений из 7, страница 1 из 1
27.11.2014, 13:39
    #38818341
ДАП
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реализовать событие со свойством Cancel аналогичное FormClosingEventArgs
Добрый день.
Не удаётся получить значение из события, аналогичное свойству FormClosingEventArgs.Cancel

Хочу сделать событие, оповещающее о возникновении ошибки в программе. В этом событии хочу сделать свойство bool Abort. И если это свойство в обработчике события выставить в true, то не генерировать исключение, а сделать return в коде.

Написал такой класс события:
Код: 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.
public class TextErrorEvent : EventArgs
    {
        public TextErrorEvent()
        {
            Abort = false;
        }

        string text;
        public string Text
        {
            get { return text; }
        }        

        public TextErrorEvent(string txt, bool abort)
        {
            text = txt.Trim();
            abort = Abort;
            
        }

        bool a = false;
        public bool Abort { get; set; }
    }

    public delegate void TextErrorEventHandler(Object sender, TextErrorEvent args);

    public override event TextErrorEventHandler TSError;



обработчик события:

Код: c#
1.
2.
3.
4.
5.
public void evnt(object sender, TextErrorEvent e)
        {
            e.Abort = true;
       //     MessageBox.Show(e.Text);
        }



ну и в нужном месте вызываем это событие:

Код: c#
1.
2.
3.
bool b = false;
TSError(this, new TextErrorEvent(msg, b));
if (b) return; else throw new ApplicationException(msg);



так вот не смотря на то, что свойству в обработчике выставили true, при вызове всё равно получаем false. Пробовал параметры и с out и с ref - не помогает
...
Рейтинг: 0 / 0
27.11.2014, 13:43
    #38818348
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реализовать событие со свойством Cancel аналогичное FormClosingEventArgs
ДАП, хромают у вас базовые знания.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var e = new TextErrorEvent();

TSError(this, e);

if (e.Abort)
{
    return;
}

throw new ApplicationException(msg);
...
Рейтинг: 0 / 0
27.11.2014, 13:47
    #38818354
ДАП
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реализовать событие со свойством Cancel аналогичное FormClosingEventArgs
skyANA,

спасибо, учту. Прошу сильно не критиковать. Это моя первая программа на C# после чтения 2-х книг и после Delphi. Но ответа на данный вопрос в них нет.
Хотел подсмотреть исходники класса FormClosingEventArgs, но не нашёл.
...
Рейтинг: 0 / 0
27.11.2014, 13:50
    #38818358
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реализовать событие со свойством Cancel аналогичное FormClosingEventArgs
ДАП, и кстати чем Вас стандартный CancelEventArgs класс не устроил?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var e = new CancelEventArgs();

TSError(this, e);

if (e.Cancel)
{
    return;
}

throw new ApplicationException(msg);
...
Рейтинг: 0 / 0
27.11.2014, 14:02
    #38818377
ДАП
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реализовать событие со свойством Cancel аналогичное FormClosingEventArgs
skyANA,

Ну хотя бы тем, что я не знал о его существовании :)
Класс возьму на заметку, но в данной ситуации я хочу передавать в параметре ещё и текст ошибки. Хотя можно попробовать унаследоваться от CancelEventArgs и добавить туда своё дополнительное свойство с текстом.
...
Рейтинг: 0 / 0
27.11.2014, 14:04
    #38818381
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реализовать событие со свойством Cancel аналогичное FormClosingEventArgs
ДАПНу хотя бы тем, что я не знал о его существовании :)Это говорит о Вашей невнимательности, т.к. FormClosingEventArgs именно от него наследуется.
...
Рейтинг: 0 / 0
27.11.2014, 15:20
    #38818468
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
реализовать событие со свойством Cancel аналогичное FormClosingEventArgs
ДАП, у тебя ошибка в одном из конструкторов:
ДАП
Код: c#
1.
2.
3.
4.
5.
public TextErrorEvent(string txt, bool abort)
{
    text = txt.Trim();
    abort = Abort;
}


Нужно писать Abort = abort;
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / реализовать событие со свойством Cancel аналогичное FormClosingEventArgs / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]