MessageBox将显示什么?

时间:2014-02-21 08:23:39

标签: c# .net enums

我有如下事件的EventHandler代码。

我不知道 e.Value 是什么意思,有人可以解释并显示MessageBox会显示的内容吗?

    void ConnectionManager_Error(object sender, EventArgs<string> e)
    {
        BeginInvoke((MethodInvoker)delegate()
        {
            State = ConnectState.NotFound;
            MessageBox.Show(e.Value);
        });
    }

注意:

我有这个代码,我认为会触发ConnectionManager Error EventHandler。

private void LogError(string error)
{
    if (Error != null)
        Error(this, new EventArgs<string>(error));
}

我也有这段代码,它给出了包含LogError方法字符串的错误信息。

int lasterror = Marshal.GetLastWin32Error();
                if (lasterror != 0)
                    LogError("Bluetooth API returned: " + lasterror.ToString());

 if (BluetoothSetServiceState(IntPtr.Zero, ref device, ref HumanInterfaceDeviceServiceClass_UUID, BLUETOOTH_SERVICE_ENABLE) != 0)
                                LogError("Failed to connect to wiimote controller");

另一个提示

更具体地说,我还有以下代码:

public event EventHandler<EventArgs<string>> Error;

ConnectionManager.Error += new EventHandler<EventArgs<string>>(ConnectionManager_Error);

还有这堂课:

public class EventArgs<T> : EventArgs
    {
        public T Value
        {
            get;
            set;
        }

        public EventArgs(T value)
            : base()
        {
            Value = value;
        }
    }

但即使设备未连接到计算机,MessageBox也不会出现。 我认为MassageBox应该显示错误信息。 有人能告诉我什么是错的吗?

2 个答案:

答案 0 :(得分:2)

您的ConnectionManagerError个事件,它将EventArgs<string>的实例传递给事件处理程序。我相信通用事件参数看起来像:

public class EventArgs<T> : EventArgs
{
    public EventArgs(T value)
    {
        Value = value;
    }

    public T Value { get; private set; }
}

因此,ConnectionManager为此事件参数设置了一些字符串值,并将其传递给ConnectionManager_Error事件处理程序。你应该看到传递的价值。从事件名称我可以假设它应该是错误信息。

注意:ConnectState枚举,State的{​​{1}}属性及其ConnectionManager事件与您使用的代码无关。

答案 1 :(得分:0)

将显示一个消息框,其中包含EventArgs提供的值。我只能假设您的EventArgs类是一个通用的EventArgs实现,其中类型参数定义了值的类型。

无论价值如何,这都是您将在MessageBox中看到的。