Почему обработчик EventHandler = null?Не могу понять - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть красные сообщения, но я не могу понять ... Мой код не имеет смысла, но я хочу иметь дело с обработчиком событий.Я ввожу данные в textBox и нажимаю кнопку Transform.Я ожидаю, что значение изменится в textBox, и, самое главное, я хочу прочитать сообщение "Браво !!!" .... У меня есть один класс SomeClassWithEvent

class SomeClassWithEvent
{
    public event EventHandler ErrorMessage;
    int data;
    bool IsDataValid(int x)
    {
        if (x > 10) {return true; }
        else {return false; }
    }
    public int Data
    {
        get {return data;}
        set 
        {
            if (!IsDataValid(value))
            {
                throw new ArgumentException("It is wrong data.", "value");                    
            }
            else { data = value;}
        }
    }
    public SomeClassWithEvent(int data)
    {
        if (!IsDataValid(data))
        {
            throw new ArgumentException("It is wrong data.", "value");
        }
        Data = data;
    }

    public string TransformData(int y)
    {
        Data = y + 10;
        OnMessage();            
        return Data.ToString();
    }

    private void OnMessage()
    {
        EventHandler handler = ErrorMessage;
        if (handler != null) handler(this, EventArgs.Empty);
    }
}

И еще Form1.cs

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        SomeClassWithEvent scwe = new SomeClassWithEvent(20);
        scwe.ErrorMessage +=(s, e) => { MessageBox.Show("Bravo!!!"); };            
    }
    private void button1_Click(object sender, EventArgs e)
    {
        int myData = Int32.Parse(textBox1.Text);
        SomeClassWithEvent scwe1 = new SomeClassWithEvent(myData);            
        textBox1.Text = scwe1.TransformData(myData);
    }        
}

Но мой обработчик EventHandler всегда нулевой ... Что было сделано неправильно?Спасибо.

...