События WinForm в другом классе. NET2 Упростить делегат - PullRequest
0 голосов
/ 01 декабря 2011

Любой способ упростить этот рабочий код, т.е. делегат {}?

 public partial class Form1 : Form
{
    private CodeDevice codeDevice;

    public Form1()
    {
        InitializeComponent();
        codeDevice = new CodeDevice();

        //subscribe to CodeDevice.ConnectionSuccessEvent and call Form1.SetupDeviceForConnectionSuccessSate when it fires
        codeDevice.ConnectionSuccessEvent += new EventHandler(SetupDeviceForConnectionSuccessState);
    }

    private void SetupDeviceForConnectionSuccessState(object sender, EventArgs args)
    {
        MessageBox.Show("It worked");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        codeDevice.test();
    }
}

public class CodeDevice
{
    public event EventHandler ConnectionSuccessEvent = delegate { };

    public void ConnectionSuccess()
    {
        ConnectionSuccessEvent(this, new EventArgs());
    }

    public void test()
    {
        System.Threading.Thread.Sleep(1000);
        ConnectionSuccess();
    }
}

Подписка на событие WinForm для другого класса

Как подписатьсяк событиям других классов в c #?

1 Ответ

0 голосов
/ 01 декабря 2011

Если не думаете, что могли бы просто:

public event EventHandler ConnectionSuccessEvent = delegate { }

даже в c # 3 + вы могли сделать только

public event EventHandler ConnectionSuccessEvent = () => { }

Однако вы могли бы упростить

codeDevice.ConnectionSuccessEvent += new EventHandler(SetupDeviceForConnectionSuccessState);

до

codeDevice.ConnectionSuccessEvent += SetupDeviceForConnectionSuccessState;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...