Example #1
0
        private void Control_MouseWheel(object sender, MouseEventArgs e)
        {
            Control c = (Control)sender;

            if (m_lstVCache.ContainsKey(c))
            {
                if (e.Delta > 5)
                {
                    ScrollBarHelper.ScrollUp(c.Handle);
                }
                else if (e.Delta < -5)
                {
                    ScrollBarHelper.ScrollDown(c.Handle);
                }

                SetVMaxNum(c);
            }
            else if (m_lstHCache.ContainsKey(c))
            {
                if (e.Delta > 5)
                {
                    ScrollBarHelper.ScrollLeft(c.Handle);
                }
                else if (e.Delta < -5)
                {
                    ScrollBarHelper.ScrollRight(c.Handle);
                }

                SetHMaxNum(c);
            }
        }
Example #2
0
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.SetGDIHigh();
            if (this.Maximum > 0)
            {
                //draw thumb
                int nTrackWidth = (this.Width - btnWidth * 2);
                //float fThumbWidth = ((float)LargeChange / (float)Maximum) * nTrackWidth;
                float fThumbWidth = nTrackWidth - this.Maximum;
                int   nThumbWidth = (int)fThumbWidth;

                if (nThumbWidth > nTrackWidth)
                {
                    nThumbWidth = nTrackWidth;
                    fThumbWidth = nTrackWidth;
                }
                if (nThumbWidth < m_intThumbMinWidth)
                {
                    nThumbWidth = m_intThumbMinWidth;
                    fThumbWidth = m_intThumbMinWidth;
                }
                int nLeft = moThumbLeft;
                nLeft += btnWidth;
                if (nLeft + nThumbWidth > this.Width - btnWidth)
                {
                    nLeft = this.Width - btnWidth - nThumbWidth;
                }
                e.Graphics.FillPath(new SolidBrush(thumbColor), new Rectangle(nLeft, 1, nThumbWidth, this.Height - 3).CreateRoundedRectanglePath(this.ConerRadius));
            }
            ScrollBarHelper.PaintTriangle(e.Graphics, new SolidBrush(thumbColor), new Point(btnWidth - Math.Min(5, this.Height / 2), this.Height / 2), Math.Min(5, this.Height / 2), EGraphDirection.Leftward);
            ScrollBarHelper.PaintTriangle(e.Graphics, new SolidBrush(thumbColor), new Point(this.Width - (btnWidth - Math.Min(5, this.Height / 2)), this.Height / 2), Math.Min(5, this.Height / 2), EGraphDirection.Rightward);
        }
Example #3
0
        /// <summary>
        /// 引发 <see cref="E:System.Windows.Forms.Control.Paint" /> 事件。
        /// </summary>
        /// <param name="e">包含事件数据的 <see cref="T:System.Windows.Forms.PaintEventArgs" />。</param>
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
            e.Graphics.SetGDIHigh();
            if (Maximum > 0)
            {
                //draw thumb
                int nTrackHeight = (this.Height - btnHeight * 2);
                //float fThumbHeight = ((float)LargeChange / (float)Maximum) * nTrackHeight;
                float fThumbHeight = nTrackHeight - Maximum;
                int   nThumbHeight = (int)fThumbHeight;

                if (nThumbHeight > nTrackHeight)
                {
                    nThumbHeight = nTrackHeight;
                    fThumbHeight = nTrackHeight;
                }
                if (nThumbHeight < m_intThumbMinHeight)
                {
                    nThumbHeight = m_intThumbMinHeight;
                    fThumbHeight = m_intThumbMinHeight;
                }
                int nTop = moThumbTop;
                nTop += btnHeight;
                if (nTop + nThumbHeight > this.Height - btnHeight)
                {
                    nTop = this.Height - btnHeight - nThumbHeight;
                }
                e.Graphics.FillPath(new SolidBrush(thumbColor), new Rectangle(1, nTop, this.Width - 3, nThumbHeight).CreateRoundedRectanglePath(this.ConerRadius));
            }
            ScrollBarHelper.PaintTriangle(e.Graphics, new SolidBrush(thumbColor), new Point(this.Width / 2, btnHeight - Math.Min(5, this.Width / 2)), Math.Min(5, this.Width / 2), EGraphDirection.Upward);
            ScrollBarHelper.PaintTriangle(e.Graphics, new SolidBrush(thumbColor), new Point(this.Width / 2, this.Height - (btnHeight - Math.Min(5, this.Width / 2))), Math.Min(5, this.Width / 2), EGraphDirection.Downward);
        }
Example #4
0
        protected override void OnCreateControl()
        {
            ScrollBarHelper _ScrollBarHelper = new ScrollBarHelper(
                Handle,
                Properties.Resources.vista_ScrollHorzShaft,
                Properties.Resources.vista_ScrollHorzArrow,
                Properties.Resources.vista_ScrollHorzThumb,
                Properties.Resources.vista_ScrollVertShaft,
                Properties.Resources.vista_ScrollVertArrow,
                Properties.Resources.vista_ScrollVertThumb,
                Properties.Resources.vista_ScrollHorzArrow
                );

            base.OnCreateControl();
        }
Example #5
0
        void barV_Scroll(object sender, EventArgs e)
        {
            ScrollbarVEx bar = (ScrollbarVEx)sender;

            if (m_lstVCache.ContainsValue(bar))
            {
                Control c = m_lstVCache.FirstOrDefault(p => p.Value == bar).Key;

                //ControlHelper.SetVScrollValue(c.Handle, bar.Value);
                if (c is ScrollableControl)
                {
                    (c as ScrollableControl).AutoScrollPosition = new Point((c as ScrollableControl).AutoScrollPosition.X, bar.Value);
                }
                else if (c is TreeView)
                {
                    ScrollBarHelper.SetVScrollValue(c.Handle, bar.Value / ((c as TreeView).ItemHeight));
                }
                else if (c is TextBox)
                {
                    ScrollBarHelper.SetVScrollValue(c.Handle, bar.Value / ((c as TextBox).PreferredHeight));
                }
                else if (c is RichTextBox)
                {
                    ScrollBarHelper.SetVScrollValue(c.Handle, bar.Value);
                }
                else if (c is ListBox)
                {
                    ScrollBarHelper.SetVScrollValue(c.Handle, bar.Value / ((c as ListBox).ItemHeight));
                }
                else if (c is ComboBox)
                {
                    ScrollBarHelper.SetVScrollValue(c.Handle, bar.Value / ((c as ComboBox).ItemHeight));
                }
                else if (c is ListView)
                {
                    ScrollBarHelper.SetVScrollValue(c.Handle, bar.Value);
                }
                else if (c is DataGridView)
                {
                    var dgv = (DataGridView)c;
                    if (bar.Value > 0)
                    {
                        dgv.FirstDisplayedScrollingRowIndex = bar.Value - 1;
                    }
                }
            }
        }
Example #6
0
        void barH_Scroll(object sender, EventArgs e)
        {
            ScrollbarHEx bar = (ScrollbarHEx)sender;

            if (m_lstHCache.ContainsValue(bar))
            {
                Control c = m_lstHCache.FirstOrDefault(p => p.Value == bar).Key;
                if (c is ScrollableControl)
                {
                    (c as ScrollableControl).AutoScrollPosition = new Point(bar.Value, (c as ScrollableControl).AutoScrollPosition.Y);
                }
                else if (c is TreeView)
                {
                    ScrollBarHelper.SetHScrollValue(c.Handle, bar.Value);
                    //TreeView tv = (c as TreeView);
                    //SetTreeViewVScrollLocation(tv, tv.Nodes, bar.Value);
                }
                else if (c is TextBox)
                {
                    ScrollBarHelper.SetHScrollValue(c.Handle, bar.Value);
                    //TextBox txt = (c as TextBox);
                    //SetTextBoxVScrollLocation(txt, bar.Value);
                }
                else if (c is RichTextBox)
                {
                    ScrollBarHelper.SetHScrollValue(c.Handle, bar.Value);
                }
                else if (c is ListBox)
                {
                    ScrollBarHelper.SetHScrollValue(c.Handle, bar.Value);
                }
                else if (c is ComboBox)
                {
                    ScrollBarHelper.SetHScrollValue(c.Handle, bar.Value);
                }
                else if (c is ListView)
                {
                    ScrollBarHelper.SetHScrollValue(c.Handle, bar.Value);
                }
                else if (c is DataGridView)
                {
                    var dgv = (DataGridView)c;
                    dgv.HorizontalScrollingOffset = bar.Value;
                }
            }
        }
 private void propertyListView_Resize(object sender, EventArgs e)
 {
     try
     {
         propertyListView.SuspendDrawing();
         propertyListView.SuspendLayout();
         var width      = propertyListView.Width - propertyListView.Columns[0].Width - 4;
         var scrollbars = ScrollBarHelper.GetVisibleScrollbars(propertyListView);
         if (scrollbars == ScrollBars.Vertical || scrollbars == ScrollBars.Both)
         {
             width -= 17;
         }
         propertyListView.Columns[1].Width = width;
     }
     finally
     {
         propertyListView.ResumeLayout();
         propertyListView.ResumeDrawing();
     }
 }
Example #8
0
    private void ResetColumnWidth()
    {
        if (objectsListView.Width > 0)
        {
            ScrollBars scrollBars = ScrollBarHelper.GetVisibleScrollBars(objectsListView);

            if (scrollBars.ToString() == "Vertical" || scrollBars.ToString() == "Both")
            {
                if (objectsListView.Columns[0].Width != objectsListView.Width - 21)
                {
                    objectsListView.Columns[0].Width = objectsListView.Width - 21;
                }
            }
            else
            {
                if (objectsListView.Columns[0].Width != objectsListView.Width - 4)
                {
                    objectsListView.Columns[0].Width = objectsListView.Width - 4;
                }
            }
        }
    }
    private void FieldNameListView_ColumnWidthChanged(object sender, ColumnWidthChangedEventArgs e)
    {
        if (fieldNameListView.Width > 0)
        {
            ScrollBars scrollBars = ScrollBarHelper.GetVisibleScrollBars(fieldNameListView);

            if (scrollBars.ToString() == "Vertical" || scrollBars.ToString() == "Both")
            {
                if (fieldNameListView.Columns[0].Width != fieldNameListView.Width - 21)
                {
                    fieldNameListView.Columns[0].Width = fieldNameListView.Width - 21;
                }
            }
            else
            {
                if (fieldNameListView.Columns[0].Width != fieldNameListView.Width - 4)
                {
                    fieldNameListView.Columns[0].Width = fieldNameListView.Width - 4;
                }
            }
        }
    }
Example #10
0
        /// <summary>
        /// Resets the v scroll location.
        /// </summary>
        /// <param name="sender">The sender.</param>
        private void ResetScrollLocation(object sender)
        {
            Control control          = (Control)sender;
            bool    blnHasVScrollbar = control.IsHandleCreated && (ScrollBarHelper.GetWindowLong(control.Handle, STYLE) & VSCROLL) != 0;
            bool    blnHasHScrollbar = control.IsHandleCreated && (ScrollBarHelper.GetWindowLong(control.Handle, STYLE) & HSCROLL) != 0;

            if (control is TextBox)
            {
                var txt = (TextBox)control;
                if (txt.ScrollBars == ScrollBars.Both)
                {
                    blnHasVScrollbar = true;
                    blnHasHScrollbar = true;
                }
                else if (txt.ScrollBars == ScrollBars.Vertical)
                {
                    blnHasVScrollbar = true;
                    blnHasHScrollbar = false;
                }
                else if (txt.ScrollBars == ScrollBars.Horizontal)
                {
                    blnHasVScrollbar = false;
                    blnHasHScrollbar = true;
                }
                else
                {
                    blnHasVScrollbar = false;
                    blnHasHScrollbar = false;
                }
            }
            else if (control is DataGridView)
            {
                var dgv = (DataGridView)control;
                if (dgv.ScrollBars == ScrollBars.Both || dgv.ScrollBars == ScrollBars.Vertical)
                {
                    int _height = dgv.RowTemplate.Height * dgv.Rows.Count;
                    if (dgv.ColumnHeadersVisible)
                    {
                        _height += dgv.ColumnHeadersHeight;
                    }
                    blnHasVScrollbar = _height > dgv.Height;
                }
                if (dgv.ScrollBars == ScrollBars.Both || dgv.ScrollBars == ScrollBars.Horizontal)
                {
                    int _width = 0;
                    foreach (DataGridViewColumn com in dgv.Columns)
                    {
                        _width += com.Width;
                    }
                    if (dgv.RowHeadersVisible)
                    {
                        _width += dgv.RowHeadersWidth;
                    }
                    blnHasHScrollbar = _width > dgv.Width;
                }
            }
            else if (control is ListView)
            {
                if (!((ListView)control).Scrollable)
                {
                    blnHasVScrollbar = false;
                    blnHasHScrollbar = false;
                }
            }
            if (control.Visible)
            {
                if (m_lstVCache.ContainsKey(control))
                {
                    m_lstVCache[control].Location = new System.Drawing.Point(control.Right - m_lstVCache[control].Width, control.Top);
                    if (blnHasHScrollbar)
                    {
                        m_lstVCache[control].Height = control.Height - m_lstHCache[control].Height;
                    }
                    else
                    {
                        m_lstVCache[control].Height = control.Height;
                    }
                    SetVMaxNum(control);
                }

                if (m_lstHCache.ContainsKey(control))
                {
                    m_lstHCache[control].Location = new System.Drawing.Point(control.Left, control.Bottom - m_lstHCache[control].Height);
                    //if (blnHasVScrollbar)
                    //{
                    //    m_lstHCache[control].Width = control.Width - m_lstVCache[control].Width;
                    //}
                    //else
                    //{
                    m_lstHCache[control].Width = control.Width;
                    //}
                    SetHMaxNum(control);
                }
            }
        }
Example #11
0
        private void SetHMaxNum(Control control)
        {
            if (!m_lstHCache.ContainsKey(control))
            {
                return;
            }
            var          intoH = ScrollBarHelper.GetHScrollBarInfo(control.Handle);
            ScrollbarHEx barH  = m_lstHCache[control];

            if (control is ScrollableControl)
            {
                barH.Maximum = intoH.ScrollMax;
                barH.Visible = intoH.ScrollMax > 0 && intoH.nMax > 0 && intoH.nPage > 0;
                barH.Value   = intoH.nPos;
                barH.BringToFront();

                //barH.Maximum = (control as ScrollableControl).HorizontalScroll.Maximum;
                //barH.Value = (control as ScrollableControl).HorizontalScroll.Value;
            }
            else if (control is TreeView)
            {
                var tv = control as TreeView;
                barH.Maximum = intoH.ScrollMax;
                barH.Visible = intoH.ScrollMax > 0 && intoH.nMax > 0 && intoH.nPage > 0;
                barH.Value   = intoH.nPos;
                barH.BringToFront();
                //barH.Maximum = GetTreeNodeMaxX(control as TreeView);
                //barH.Value = (control as TreeView).AutoScrollOffset.X;
            }
            else if (control is TextBox)
            {
                TextBox txt = (TextBox)control;
                barH.Maximum = intoH.ScrollMax;

                if (txt.ScrollBars == ScrollBars.Both || txt.ScrollBars == ScrollBars.Horizontal)
                {
                    barH.Visible = true;
                }
                else
                {
                    barH.Visible = false;
                }

                barH.Value = intoH.nPos;
                barH.BringToFront();
            }
            else if (control is RichTextBox)
            {
                bool blnHasHScrollbar = control.IsHandleCreated && (ScrollBarHelper.GetWindowLong(control.Handle, STYLE) & HSCROLL) != 0;

                barH.Maximum = intoH.ScrollMax;
                barH.Visible = blnHasHScrollbar;
                barH.Value   = intoH.nPos;
                barH.BringToFront();
            }
            else if (control is ListBox)
            {
                var lb = control as ListBox;
                barH.Maximum = intoH.ScrollMax * lb.ItemHeight;
                barH.Visible = intoH.ScrollMax > 0 && intoH.nMax > 0 && intoH.nPage > 0;
                barH.Value   = intoH.nPos * lb.ItemHeight;
                barH.BringToFront();
            }
            else if (control is ComboBox)
            {
                var lb = control as ComboBox;
                barH.Maximum = intoH.ScrollMax * lb.ItemHeight;
                barH.Visible = intoH.ScrollMax > 0 && intoH.nMax > 0 && intoH.nPage > 0;
                barH.Value   = intoH.nPos * lb.ItemHeight;
                barH.BringToFront();
            }
            else if (control is ListView)
            {
                barH.Maximum = intoH.ScrollMax;
                barH.Visible = intoH.ScrollMax > 0 && intoH.nMax > 0 && intoH.nPage > 0;
                barH.Value   = intoH.nPos;
                barH.BringToFront();
            }
            else if (control is DataGridView)
            {
                bool blnHasHScrollbar = false;
                var  dgv    = (DataGridView)control;
                int  _width = 0;
                if (dgv.ScrollBars == ScrollBars.Both || dgv.ScrollBars == ScrollBars.Horizontal)
                {
                    foreach (DataGridViewColumn com in dgv.Columns)
                    {
                        _width += com.Width;
                    }
                    if (dgv.RowHeadersVisible)
                    {
                        _width += dgv.RowHeadersWidth;
                    }
                    blnHasHScrollbar = _width > dgv.Width;
                }
                if (blnHasHScrollbar)
                {
                    barH.Maximum = _width - dgv.Width;
                }
                barH.Visible = blnHasHScrollbar;
                barH.Value   = dgv.FirstDisplayedScrollingColumnHiddenWidth;
                barH.BringToFront();
            }
        }
Example #12
0
        private void SetVMaxNum(Control control)
        {
            if (!m_lstVCache.ContainsKey(control))
            {
                return;
            }
            var          intoV = ScrollBarHelper.GetVScrollBarInfo(control.Handle);
            ScrollbarVEx barV  = m_lstVCache[control];

            if (control is ScrollableControl)
            {
                barV.Maximum = intoV.ScrollMax;
                barV.Visible = intoV.ScrollMax > 0 && intoV.nMax > 0 && intoV.nPage > 0;
                barV.Value   = intoV.nPos;
                barV.BringToFront();
                // barV.Maximum = (control as ScrollableControl).VerticalScroll.Maximum;
                // barV.Value = (control as ScrollableControl).VerticalScroll.Value;
            }
            else if (control is TreeView)
            {
                var tv = control as TreeView;
                barV.Maximum = intoV.ScrollMax * tv.ItemHeight;
                barV.Visible = intoV.ScrollMax > 0 && intoV.nMax > 0 && intoV.nPage > 0;
                barV.Value   = intoV.nPos * tv.ItemHeight;
                barV.BringToFront();

                //barV.Maximum = GetTreeNodeMaxY(control as TreeView) - control.Height;
                //barV.Value = (control as TreeView).AutoScrollOffset.Y;
            }
            else if (control is TextBox)
            {
                TextBox txt = (TextBox)control;
                barV.Maximum = intoV.ScrollMax * txt.PreferredHeight;
                if (txt.ScrollBars == ScrollBars.Both || txt.ScrollBars == ScrollBars.Vertical)
                {
                    barV.Visible = true;
                }
                else
                {
                    barV.Visible = false;
                }
                barV.Value = intoV.nPos * txt.PreferredHeight;
                barV.BringToFront();
            }
            else if (control is RichTextBox)
            {
                bool blnHasVScrollbar = control.IsHandleCreated && (ScrollBarHelper.GetWindowLong(control.Handle, STYLE) & VSCROLL) != 0;
                barV.Maximum = intoV.ScrollMax;
                barV.Visible = blnHasVScrollbar;
                barV.Value   = intoV.nPos;
                barV.BringToFront();
            }
            else if (control is ListBox)
            {
                var lb = control as ListBox;
                if (intoV.ScrollMax <= 1)
                {
                    var v = lb.ItemHeight * lb.Items.Count - lb.Height;
                    if (v > 0)
                    {
                        barV.Maximum = v;
                    }
                    else
                    {
                        barV.Maximum = intoV.ScrollMax * lb.ItemHeight;
                    }
                }
                else
                {
                    barV.Maximum = intoV.ScrollMax * lb.ItemHeight;
                }
                barV.Visible = intoV.ScrollMax > 0 && intoV.nMax > 0 && intoV.nPage > 0;
                barV.Value   = intoV.nPos * lb.ItemHeight;
                barV.BringToFront();
            }
            else if (control is ComboBox)
            {
                var lb = control as ComboBox;
                if (intoV.ScrollMax <= 1)
                {
                    var v = lb.ItemHeight * lb.Items.Count - lb.Height;
                    if (v > 0)
                    {
                        barV.Maximum = v;
                    }
                    else
                    {
                        barV.Maximum = intoV.ScrollMax * lb.ItemHeight;
                    }
                }
                else
                {
                    barV.Maximum = intoV.ScrollMax * lb.ItemHeight;
                }
                barV.Visible = intoV.ScrollMax > 0 && intoV.nMax > 0 && intoV.nPage > 0;
                barV.Value   = intoV.nPos * lb.ItemHeight;
                barV.BringToFront();
            }
            else if (control is ListView)
            {
                barV.Maximum = intoV.ScrollMax;
                barV.Visible = intoV.ScrollMax > 0 && intoV.nMax > 0 && intoV.nPage > 0;
                barV.Value   = intoV.nPos;
                barV.BringToFront();
            }
            else if (control is DataGridView)
            {
                bool blnHasVScrollbar = false;
                var  dgv = (DataGridView)control;
                if (dgv.ScrollBars == ScrollBars.Both || dgv.ScrollBars == ScrollBars.Vertical)
                {
                    int _height = dgv.RowTemplate.Height * dgv.Rows.Count;
                    if (dgv.ColumnHeadersVisible)
                    {
                        _height += dgv.ColumnHeadersHeight;
                    }
                    blnHasVScrollbar = _height > dgv.Height;
                }
                barV.Maximum = dgv.Rows.Count;
                barV.Visible = blnHasVScrollbar;
                barV.Value   = dgv.FirstDisplayedScrollingRowIndex;;
                barV.BringToFront();
            }
        }
Example #13
0
        void control_SizeChanged(object sender, EventArgs e)
        {
            if (this.DesignMode)
            {
                return;
            }
            else
            {
                var control = sender as Control;

                bool blnHasVScrollbar = control.IsHandleCreated && (ScrollBarHelper.GetWindowLong(control.Handle, STYLE) & VSCROLL) != 0;
                bool blnHasHScrollbar = control.IsHandleCreated && (ScrollBarHelper.GetWindowLong(control.Handle, STYLE) & HSCROLL) != 0;
                if (control is TextBox)
                {
                    var txt = (TextBox)control;
                    if (txt.ScrollBars == ScrollBars.Both)
                    {
                        blnHasVScrollbar = true;
                        blnHasHScrollbar = true;
                    }
                    else if (txt.ScrollBars == ScrollBars.Vertical)
                    {
                        blnHasVScrollbar = true;
                        blnHasHScrollbar = false;
                    }
                    else if (txt.ScrollBars == ScrollBars.Horizontal)
                    {
                        blnHasVScrollbar = false;
                        blnHasHScrollbar = true;
                    }
                    else
                    {
                        blnHasVScrollbar = false;
                        blnHasHScrollbar = false;
                    }
                }
                else if (control is DataGridView)
                {
                    var dgv = (DataGridView)control;
                    if (dgv.ScrollBars == ScrollBars.Both || dgv.ScrollBars == ScrollBars.Vertical)
                    {
                        int _height = dgv.RowTemplate.Height * dgv.Rows.Count;
                        if (dgv.ColumnHeadersVisible)
                        {
                            _height += dgv.ColumnHeadersHeight;
                        }
                        blnHasVScrollbar = _height > dgv.Height;
                    }
                    if (dgv.ScrollBars == ScrollBars.Both || dgv.ScrollBars == ScrollBars.Horizontal)
                    {
                        int _width = 0;
                        foreach (DataGridViewColumn com in dgv.Columns)
                        {
                            _width += com.Width;
                        }
                        if (dgv.RowHeadersVisible)
                        {
                            _width += dgv.RowHeadersWidth;
                        }
                        blnHasHScrollbar = _width > dgv.Width;
                    }
                }
                else if (control is ListView)
                {
                    if (!((ListView)control).Scrollable)
                    {
                        blnHasVScrollbar = false;
                        blnHasHScrollbar = false;
                    }
                }
                if (blnHasVScrollbar)
                {
                    if (!m_lstVCache.ContainsKey(control))
                    {
                        if (control.Parent != null)
                        {
                            ScrollbarVEx barV = new ScrollbarVEx();
                            barV.SmallChange     = 5;
                            barV.Width           = SystemInformation.VerticalScrollBarWidth + 1;
                            barV.Scroll         += barV_Scroll;
                            m_lstVCache[control] = barV;
                            if (blnHasHScrollbar)
                            {
                                barV.Height = control.Height - barV.Width;
                            }
                            else
                            {
                                barV.Height = control.Height;
                            }
                            SetVMaxNum(control);
                            barV.Location = new System.Drawing.Point(control.Right - barV.Width, control.Top);
                            control.Parent.Controls.Add(barV);
                            int intControlIndex = control.Parent.Controls.GetChildIndex(control);
                            control.Parent.Controls.SetChildIndex(barV, intControlIndex);
                        }
                    }
                    else
                    {
                        if (blnHasHScrollbar)
                        {
                            m_lstVCache[control].Height = control.Height - m_lstVCache[control].Width;
                        }
                        else
                        {
                            m_lstVCache[control].Height = control.Height;
                        }
                        SetVMaxNum(control);
                    }
                }
                else
                {
                    if (m_lstVCache.ContainsKey(control) && m_lstVCache[control].Parent != null)
                    {
                        m_lstVCache[control].Visible = false;
                    }
                }

                if (blnHasHScrollbar)
                {
                    if (!m_lstHCache.ContainsKey(control))
                    {
                        if (control.Parent != null)
                        {
                            ScrollbarHEx barH = new ScrollbarHEx();
                            barH.Height      = SystemInformation.HorizontalScrollBarHeight + 1;
                            barH.SmallChange = 5;

                            barH.Scroll         += barH_Scroll;
                            m_lstHCache[control] = barH;
                            if (blnHasHScrollbar)
                            {
                                barH.Width = control.Width - barH.Height;
                            }
                            else
                            {
                                barH.Width = control.Width;
                            }
                            SetHMaxNum(control);
                            barH.Location = new System.Drawing.Point(control.Left, control.Bottom - barH.Height);
                            control.Parent.Controls.Add(barH);
                            int intControlIndex = control.Parent.Controls.GetChildIndex(control);
                            control.Parent.Controls.SetChildIndex(barH, intControlIndex);
                        }
                    }
                    else
                    {
                        if (blnHasHScrollbar)
                        {
                            m_lstHCache[control].Width = control.Width - m_lstHCache[control].Height;
                        }
                        else
                        {
                            m_lstHCache[control].Width = control.Width;
                        }
                        SetHMaxNum(control);
                    }
                }
                else
                {
                    if (m_lstHCache.ContainsKey(control))
                    {
                        if (m_lstHCache[control].Visible && m_lstHCache[control].Parent != null)
                        {
                            m_lstHCache[control].Visible = false;
                        }
                    }
                }
            }
            ResetScrollLocation(sender);
        }