Esempio n. 1
0
        void kb_CharacterEntered(char character)
        {
            if (_activeControl != null && character == '\t' && !_activeControl.HandleTab())
            {
                if (_activeControl.Parent != null)
                {
                    Control parent = _activeControl.Parent;
                    int     cIdx   = -1;

                    for (int i = 0; i < parent.Controls.Count; i++)
                    {
                        if (parent.Controls[i] == _activeControl)
                        {
                            cIdx = i;
                            break;
                        }
                    }

                    if (cIdx != -1)
                    {
                        cIdx++;
                        if (cIdx >= parent.Controls.Count)
                        {
                            cIdx = 0;
                        }

                        Control next = parent.Controls[cIdx];

                        int started = cIdx;
                        while (!next.TabStop)
                        {
                            cIdx++;
                            if (cIdx >= parent.Controls.Count)
                            {
                                cIdx = 0;
                            }

                            next = parent.Controls[cIdx];

                            if (cIdx == started)
                            {
                                break;
                            }
                        }

                        SetActiveControl(parent.Controls[cIdx]);
                    }

                    return;
                }
            }

            if (_activeControl != null)
            {
                _activeControl.OnKeyPress(character);
            }
        }