Exemplo n.º 1
0
        internal static void DoKeyReleased(Keys k)
        {
            if (OnKeyReleased != null)
            {
                Delegate[] dels = OnKeyReleased.GetInvocationList();

                //ctrl+shift is considered a universal override.
                //it will reverse the order of event handling to allow global-level UI to handle keys/mouse before others.
                if (KeyboardHandler.ControlPressed && KeyboardHandler.ShiftPressed)
                {
                    List <Delegate> temp = new List <Delegate>(dels);
                    temp.Reverse();
                    dels = temp.ToArray();
                }

                if (dels.Length == 0)
                {
                    return;
                }

                for (int i = dels.Length - 1; i >= 0; i--)
                {
                    KeyEventHandler d = dels[i] as KeyEventHandler;
                    if (d == null) // cast error. should never happen.
                    {
                        continue;
                    }

                    if ((bool)d.DynamicInvoke(null, k))
                    {
                        break;
                    }
                }
            }
        }