示例#1
0
        internal static void NotifyEventHandlers(WindowMessage message)
        {
            var messageType = message.GetType();

            if (EventHandlers.ContainsKey(messageType))
            {
                EventHandlers[messageType].ForEach(handler =>
                {
                    try
                    {
                        switch (message.Message)
                        {
                        case WindowMessages.KeyDown:
                            ((MessageHandler <KeyDown>)handler).Invoke((KeyDown)message);
                            break;

                        case WindowMessages.KeyUp:
                            ((MessageHandler <KeyUp>)handler).Invoke((KeyUp)message);
                            break;

                        case WindowMessages.LeftButtonDoubleClick:
                            ((MessageHandler <LeftButtonDoubleClick>)handler).Invoke((LeftButtonDoubleClick)message);
                            break;

                        case WindowMessages.LeftButtonDown:
                            ((MessageHandler <LeftButtonDown>)handler).Invoke((LeftButtonDown)message);
                            break;

                        case WindowMessages.LeftButtonUp:
                            ((MessageHandler <LeftButtonUp>)handler).Invoke((LeftButtonUp)message);
                            break;

                        case WindowMessages.MiddleButtonDoubleClick:
                            ((MessageHandler <MiddleButtonDoubleClick>)handler).Invoke((MiddleButtonDoubleClick)message);
                            break;

                        case WindowMessages.MiddleButtonDown:
                            ((MessageHandler <MiddleButtonDown>)handler).Invoke((MiddleButtonDown)message);
                            break;

                        case WindowMessages.MiddleButtonUp:
                            ((MessageHandler <MiddleButtonUp>)handler).Invoke((MiddleButtonUp)message);
                            break;

                        case WindowMessages.MouseMove:
                            ((MessageHandler <MouseMove>)handler).Invoke((MouseMove)message);
                            break;

                        case WindowMessages.MouseWheel:
                            ((MessageHandler <MouseWheel>)handler).Invoke((MouseWheel)message);
                            break;

                        case WindowMessages.RightButtonDoubleClick:
                            ((MessageHandler <RightButtonDoubleClick>)handler).Invoke((RightButtonDoubleClick)message);
                            break;

                        case WindowMessages.RightButtonDown:
                            ((MessageHandler <RightButtonDown>)handler).Invoke((RightButtonDown)message);
                            break;

                        case WindowMessages.RightButtonUp:
                            ((MessageHandler <RightButtonUp>)handler).Invoke((RightButtonUp)message);
                            break;
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Error notifying event handler for message '{0}'", message);
                        Console.WriteLine(e);
                    }
                });
            }
        }