예제 #1
0
        public override void UpdateHScrollbarMaximum()
        {
            int val2 = 0;
            ITraverser <ListViewDataItem> enumerator = (ITraverser <ListViewDataItem>) this.Scroller.Traverser.GetEnumerator();

            enumerator.Reset();
            bool flag = this.Owner.ShowGroups && this.Owner.Groups.Count > 0 && (this.Owner.EnableGrouping || this.Owner.EnableCustomGrouping) && !this.FullRowSelect;

            while (enumerator.MoveNext())
            {
                val2 = Math.Max(enumerator.Current.ActualSize.Width + (enumerator.Current is ListViewDataItemGroup || !flag ? 0 : this.GroupIndent), val2);
            }
            if (this.HScrollBar.Maximum != val2)
            {
                if (this.HScrollBar.Value + this.HScrollBar.LargeChange - 1 > val2)
                {
                    this.HScrollBar.Maximum = val2;
                    this.HScrollBar.Value   = val2 - this.HScrollBar.LargeChange + 1;
                }
                else
                {
                    this.HScrollBar.Maximum = val2;
                }
            }
            this.UpdateHScrollbarVisibility();
        }
예제 #2
0
        internal override void UpdateHScrollbarMaximum()
        {
            int newMaximum = 0;
            ITraverser <ListViewDataItem> enumerator = (ITraverser <ListViewDataItem>) this.Scroller.Traverser.GetEnumerator();

            enumerator.Reset();

            bool calcIndent = this.owner.ShowGroups && this.owner.Groups.Count > 0 &&
                              (this.owner.EnableGrouping || this.owner.EnableCustomGrouping) && !this.FullRowSelect;

            while (enumerator.MoveNext())
            {
                newMaximum = Math.Max(
                    enumerator.Current.ActualSize.Width +
                    ((!(enumerator.Current is ListViewDataItemGroup) && calcIndent) ? this.GroupIndent : 0),
                    newMaximum);
            }

            if (this.HScrollBar.Maximum != newMaximum)
            {
                if (this.HScrollBar.Value + this.HScrollBar.LargeChange - 1 > newMaximum)
                {
                    this.HScrollBar.Maximum = newMaximum;
                    this.HScrollBar.Value   = newMaximum - this.HScrollBar.LargeChange + 1;
                }
                else
                {
                    this.HScrollBar.Maximum = newMaximum;
                }
            }

            UpdateHScrollbarVisibility();
        }
예제 #3
0
        protected virtual bool IsFirstChildRow(IHierarchicalRow parent, GridViewRowInfo row)
        {
            ITraverser <GridViewRowInfo> traverser = this.GetTraverser(parent);

            traverser.Reset();
            traverser.MoveNext();
            return(traverser.Current == row);
        }
예제 #4
0
        /// <summary>
        /// Handles a press of the Home key.
        /// </summary>
        /// <param name="e">The event args.</param>
        protected virtual void HandleHomeKey(KeyEventArgs e)
        {
            ITraverser <ListViewDataItem> enumerator = this.Scroller.Traverser.GetEnumerator() as ITraverser <ListViewDataItem>;

            enumerator.Reset();

            if (enumerator.MoveNext() && enumerator.Current != null)
            {
                this.ProcessSelection(enumerator.Current, Control.ModifierKeys, false);
            }
        }
예제 #5
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));
        }