将额外变量传递给事件C#

时间:2014-02-07 11:57:54

标签: c# variables events

首先,我已经看过了,但似乎没有得到这个问题的帮助。

基本上我的应用程序使用以下方法触发从串口接收的数据上的事件:

sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived);

我使用以下方式处理收到的数据:

private static void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    try
    {
        string inData;
        bool passed;
        SerialPort spRead = (SerialPort)sender;
        inData = spRead.ReadLine();
        TwinCat comm = new TwinCat();
        passed = comm.passiButton(inData);
        if (passed) comm.disposeComm();
        else MessageBox.Show("Error Closing Comm");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.ToString());
    }
}

除此之外,我有一个复选框控件,我想通过检查或不通过,即一个额外的bool变量,以便我可以改变如何处理数据取决于是否选中复选框。

请注意,条件尚未实现,因为我无法在事件中传递bool变量。

1 个答案:

答案 0 :(得分:1)

假设CheckBoxSerialPort的格式相同......

从事件处理程序中删除static关键字,然后从DataReceived事件处理程序安全地访问非GUI变量。

// member variable
// update the value during the checkbox's CheckChanged event handler
private bool isChecked;

private void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    ...

    if (isChecked) 
    {
        // do something special
    }

    ...
}

编辑:进行了更改以避免跨线程GUI操作