コード例 #1
0
        protected virtual void HandleMovement()
        {
            CursorMovementArgs cursorMovementArgs = new CursorMovementArgs(focusedControl, cursorPosition, cursorSize);

            // Tarkistetaan eka focus silti kontrollilta jolla se on viimeksi ollut.
            // Jos kontrolli menettää focuksen, etsitään seuraava.
            if (focusedControl != null && focusedControl.ContainsFocus)
            {
                focusedControl.HandleCursorMovement(cursorMovementArgs);

                if (focusedControl.ContainsFocus)
                {
                    return;
                }
            }

            IEnumerable <Control> focusableControls = GetFocusableControls()
                                                      .OrderByDescending(c => c.DrawOrder)
                                                      .ToList();

            foreach (Control control in focusableControls)
            {
                control.HandleCursorMovement(cursorMovementArgs);

                if (control.ContainsFocus)
                {
                    focusedControl = control;
                    break;
                }
            }

            if (focusableControls.Count(c => c.ContainsFocus) > 1)
            {
                throw new InvalidGuiOperationException("Only one control can contain focus.");
            }
        }
コード例 #2
0
ファイル: EventArgs.cs プロジェクト: siquel/BeatEmUp
 public GuiCursorMovementEventArgs(CursorMovementArgs cursorMovementArgs)
     : base()
 {
     CursorMovementArgs = cursorMovementArgs;
 }