Mono.Terminal.Container.FocusNext C# (CSharp) Метод

FocusNext() публичный Метод

Focuses the next widget.
public FocusNext ( ) : bool
Результат bool
        public bool FocusNext()
        {
            if (focused == null){
                FocusFirst ();
                return focused != null;
            }
            int n = widgets.Count;
            int focused_idx = -1;
            for (int i = 0; i < n; i++){
                Widget w = (Widget)widgets [i];

                if (w.HasFocus){
                    Container c = w as Container;
                    if (c != null){
                        if (c.FocusNext ())
                            return true;
                    }
                    focused_idx = i;
                    continue;
                }
                if (w.CanFocus && focused_idx != -1){
                    focused.HasFocus = false;

                    Container c = w as Container;
                    if (c != null && c.CanFocus){
                        c.FocusFirst ();
                    }
                    SetFocus (w);
                    return true;
                }
            }
            if (focused != null){
                focused.HasFocus = false;
                focused = null;
            }
            return false;
        }

Usage Example

Пример #1
0
        static void ProcessChar(Container container)
        {
            int ch = Curses.getch ();

            if ((ch == -1) || (ch == Curses.KeyResize)){
                if (Curses.CheckWinChange ()){
                    EmptyContainer.Clear ();
                    foreach (Container c in toplevels)
                        c.SizeChanged ();
                    Refresh ();
                }
                return;
            }

            if (ch == Curses.KeyMouse){
                Curses.MouseEvent ev;

                Curses.console_sharp_getmouse (out ev);
                container.ProcessMouse (ev);
                return;
            }

            if (ch == 27){
                Curses.timeout (100);
                int k = Curses.getch ();
                if (k != Curses.ERR && k != 27)
                    ch = Curses.KeyAlt | k;
                Curses.timeout (-1);
            }

            if (container.ProcessHotKey (ch))
                return;

            if (container.ProcessKey (ch))
                return;

            if (container.ProcessColdKey (ch))
                return;

            // Control-c, quit the current operation.
            if (ch == 3){
                container.Running = false;
                return;
            }

            // Control-z, suspend execution, then repaint.
            if (ch == 26){
                Curses.console_sharp_sendsigtstp ();
                Window.Standard.redrawwin ();
                Curses.refresh ();
            }

            //
            // Focus handling
            //
            if (ch == 9 || ch == Curses.KeyDown || ch == Curses.KeyRight){
                if (!container.FocusNext ())
                    container.FocusNext ();
                Curses.refresh ();
            } else if (ch == Curses.KeyUp || ch == Curses.KeyLeft){
                if (!container.FocusPrev ())
                    container.FocusPrev ();
                Curses.refresh ();
            }
        }
All Usage Examples Of Mono.Terminal.Container::FocusNext