private void OnMouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left || !(sender is MyBandedGridView))
            {
                return;
            }

            MyBandedGridView  view    = (MyBandedGridView)sender;
            BandedGridHitInfo hitInfo = view.CalcHitInfo(e.X, e.Y);

            if (hitInfo.HitTest == BandedGridHitTest.Band)
            {
                GridBandInfoArgs bandInfo = view.ViewInfo.BandsInfo[hitInfo.Band];
                if (CalcButtonBounds(bandInfo.Bounds).Contains(e.X, e.Y))
                {
                    EditorButtonObjectInfoArgs bandButtonInfo = FindButtonInnerElement(bandInfo);
                    if (bandButtonInfo != null)
                    {
                        bandButtonInfo.State = ObjectState.Pressed;
                        view.InvalidateBandHeader(hitInfo.Band);
                    }

                    ((DXMouseEventArgs)e).Handled = true;
                }
                else
                {
                    view.InvalidateBandHeader(hitInfo.Band);
                }
            }
        }
        private void OnMouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left || !(sender is MyBandedGridView))
            {
                return;
            }

            MyBandedGridView  view    = (MyBandedGridView)sender;
            BandedGridHitInfo hitInfo = view.CalcHitInfo(e.X, e.Y);

            if (hitInfo.HitTest == BandedGridHitTest.Band)
            {
                GridBandInfoArgs bandInfo = view.ViewInfo.BandsInfo[hitInfo.Band];
                if (CalcButtonBounds(bandInfo.Bounds).Contains(e.X, e.Y))
                {
                    EditorButtonObjectInfoArgs bandButtonInfo = FindButtonInnerElement(bandInfo);
                    if (bandButtonInfo != null)
                    {
                        for (int i = 0; i < hitInfo.Band.Columns.Count; i++)
                        {
                            if (!((MyBandedGridColumn)hitInfo.Band.Columns[i]).DefaultBandColumn)
                            {
                                hitInfo.Band.Columns[i].Visible = !hitInfo.Band.Columns[i].Visible;
                            }
                        }
                    }

                    ((DXMouseEventArgs)e).Handled = true;
                }
            }
        }
        private void OnMouseMove(object sender, MouseEventArgs e)
        {
            if (!(sender is MyBandedGridView))
            {
                return;
            }

            MyBandedGridView  view    = (MyBandedGridView)sender;
            BandedGridHitInfo hitInfo = view.CalcHitInfo(e.X, e.Y);

            if (hitInfo.HitTest == BandedGridHitTest.Band)
            {
                GridBandInfoArgs           bandInfo       = view.ViewInfo.BandsInfo[hitInfo.Band];
                EditorButtonObjectInfoArgs bandButtonInfo = FindButtonInnerElement(bandInfo);
                if (bandButtonInfo != null)
                {
                    if (CalcButtonBounds(bandInfo.Bounds).Contains(e.X, e.Y))
                    {
                        bandButtonInfo.State = ObjectState.Hot;
                        view.InvalidateBandHeader(hitInfo.Band);

                        ((DXMouseEventArgs)e).Handled = true;
                    }
                    else
                    {
                        bandButtonInfo.State = ObjectState.Normal;
                        view.InvalidateBandHeader(hitInfo.Band);
                    }
                }
            }
            else
            {
                for (int i = 0; i < view.ViewInfo.BandsInfo.Count; i++)
                {
                    EditorButtonObjectInfoArgs bandButtonInfo = FindButtonInnerElement(view.ViewInfo.BandsInfo[i]);
                    if (bandButtonInfo != null)
                    {
                        bandButtonInfo.State = ObjectState.Normal;
                    }
                }
            }
        }