protected override void HandleLeftKey(System.Windows.Forms.KeyEventArgs e)
        {
            int columnIndex = this.owner.Columns.IndexOf(this.owner.CurrentColumn);
            ITraverser <ListViewDetailColumn> enumerator = (ITraverser <ListViewDetailColumn>) this.columnScroller.Traverser.GetEnumerator();

            enumerator.Position = columnIndex;
            if (enumerator.MovePrevious())
            {
                this.owner.CurrentColumn = enumerator.Current;
            }
        }
Beispiel #2
0
        private bool StepOutOfHierarchy()
        {
            GridViewHierarchyRowInfo hierarchyRow1 = this.hierarchyRow as GridViewHierarchyRowInfo;

            if (this.hierarchyRow is GridViewGroupRowInfo || this.hierarchyRow.HasChildViews || this.processHierarchy && (this.hierarchyRow.Parent != null || this.hierarchyRow is GridViewHierarchyRowInfo))
            {
                IHierarchicalRow hierarchyRow2 = this.hierarchyRow;
                this.oldRowIsGroupRow = hierarchyRow2 is GridViewGroupRowInfo;
                this.hierarchyRow     = this.hierarchyRow.Parent;
                GridViewInfo gridViewInfo = this.Current != null ? this.Current.ViewInfo : (GridViewInfo)null;
                bool         flag         = this.Current is GridViewHierarchyRowInfo;
                if (this.hierarchyRow == null)
                {
                    this.hierarchyRow = this.rootRow;
                }
                if (this.hierarchyTraversers.Count > 0)
                {
                    ITraverser <GridViewRowInfo> traverser = this.hierarchyTraversers.Pop();
                    traverser.MovePrevious();
                    traverser.MovePrevious();
                    for (int index = 0; index < 5; ++index)
                    {
                        traverser.MoveNext();
                        if (traverser.Current == hierarchyRow2)
                        {
                            this.traverser = traverser;
                            return(this.ProcessHierarchy || hierarchyRow1 == null || (hierarchyRow1.ViewTemplate.Templates.Count <= 0 || !hierarchyRow1.ViewTemplate.IsSelfReference) || (gridViewInfo == null || hierarchyRow1.ViewTemplate == gridViewInfo.ViewTemplate) && (flag || hierarchyRow1 != this.rootRow));
                        }
                    }
                }
                this.CreateTraverser();
                while (this.traverser.MoveNext())
                {
                    if (this.traverser.Current == hierarchyRow2)
                    {
                        return(this.ProcessHierarchy || hierarchyRow1 == null || (hierarchyRow1.ViewTemplate.Templates.Count <= 0 || !hierarchyRow1.ViewTemplate.IsSelfReference) || (gridViewInfo == null || hierarchyRow1.ViewTemplate == gridViewInfo.ViewTemplate) && (flag || hierarchyRow1 != this.rootRow));
                    }
                }
            }
            return(false);
        }
Beispiel #3
0
        protected override void HandleLeftKey(KeyEventArgs e)
        {
            int num = this.Owner.Columns.IndexOf(this.Owner.CurrentColumn);
            ITraverser <ListViewDetailColumn> enumerator = (ITraverser <ListViewDetailColumn>) this.columnScroller.Traverser.GetEnumerator();

            enumerator.Position = (object)num;
            if (!enumerator.MovePrevious())
            {
                return;
            }
            this.Owner.CurrentColumn = enumerator.Current;
        }
Beispiel #4
0
        protected override bool ProcessDialogKey(Keys keyData)
        {
            if (keyData == Keys.Tab)
            {
                var view        = this.ListViewElement.ViewElement as DetailListViewElement;
                var element     = this.ListViewElement;
                int columnIndex = element.Columns.IndexOf(element.CurrentColumn);

                ITraverser <ListViewDetailColumn> colEnumerator = (ITraverser <ListViewDetailColumn>)view.ColumnScroller.Traverser.GetEnumerator();
                colEnumerator.Position = columnIndex;

                if (colEnumerator.MoveNext())
                {
                    var isEditing = element.IsEditing;

                    element.CurrentColumn = colEnumerator.Current;
                    if (isEditing)
                    {
                        element.BeginEdit();
                    }
                    return(true);
                }
                else
                {
                    ListViewTraverser enumerator = view.Scroller.Traverser.GetEnumerator() as ListViewTraverser;
                    enumerator.Position = element.CurrentItem;

                    if (enumerator.MoveNext())
                    {
                        var isEditing = element.IsEditing;


                        colEnumerator.Reset();
                        colEnumerator.MoveNext();
                        element.CurrentColumn = colEnumerator.Current;
                        element.CurrentItem   = enumerator.Current;
                        element.SelectedItem  = enumerator.Current;

                        if (isEditing)
                        {
                            element.BeginEdit();
                        }

                        return(true);
                    }
                }
            }
            if (keyData == (Keys.Tab | Keys.Shift))
            {
                var view        = this.ListViewElement.ViewElement as DetailListViewElement;
                var element     = this.ListViewElement;
                int columnIndex = element.Columns.IndexOf(element.CurrentColumn);

                ITraverser <ListViewDetailColumn> colEnumerator = (ITraverser <ListViewDetailColumn>)view.ColumnScroller.Traverser.GetEnumerator();
                colEnumerator.Position = columnIndex;

                if (colEnumerator.MovePrevious())
                {
                    var isEditing = element.IsEditing;

                    element.CurrentColumn = colEnumerator.Current;

                    if (isEditing)
                    {
                        element.BeginEdit();
                    }
                    return(true);
                }
                else
                {
                    ListViewTraverser enumerator = view.Scroller.Traverser.GetEnumerator() as ListViewTraverser;
                    enumerator.Position = element.CurrentItem;

                    if (enumerator.MovePrevious())
                    {
                        var isEditing = element.IsEditing;

                        colEnumerator.MoveToEnd();
                        element.CurrentColumn = colEnumerator.Current;
                        element.CurrentItem   = enumerator.Current;
                        element.SelectedItem  = enumerator.Current;

                        if (isEditing)
                        {
                            element.BeginEdit();
                        }

                        return(true);
                    }
                }
            }
            return(base.ProcessDialogKey(keyData));
        }