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; } }
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); }
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; }
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)); }