Coder Social home page Coder Social logo

Comments (3)

OToussaint avatar OToussaint commented on August 13, 2024 1
        protected override void OnMouseWheel(MouseEventArgs e)
        {
            base.OnMouseWheel(e);

            int incrementBy=0; // Don't know yet the direction
            int firstDisplayedRowIndex = Math.Max(this.FirstDisplayedScrollingRowIndex + (e.Delta > 0 ? -1 : 1), 0); // Default next is current +/- 1

            if (this.RowCount > 1) // It is worthless to do all this if there is no row in the grid
            {
                if (e.Delta > 0 && this.FirstDisplayedScrollingRowIndex > 0) // Are we going up?
                {
                    incrementBy = -1;
                }
                else if (e.Delta < 0) // Or down?
                {
                    incrementBy = 1;
                }

                while (!this.Rows[firstDisplayedRowIndex].Visible) // Oops, row is invisible. Time to jump to a visible row.
                {
                    if (firstDisplayedRowIndex < 1) // Go to first displayable row
                    {
                        firstDisplayedRowIndex = this.Rows.GetFirstRow(DataGridViewElementStates.Visible); 
                    }
                    else if (firstDisplayedRowIndex > this.Rows.GetLastRow(DataGridViewElementStates.Visible)) // Go to last displayable row
                    {
                        firstDisplayedRowIndex = this.Rows.GetLastRow(DataGridViewElementStates.Visible);
                    }
                    else // Try next row, maybe it is visible?
                    {
                        firstDisplayedRowIndex += incrementBy;
                    }
                }

                // As we just found a visible candidate, move to it.
                this.FirstDisplayedScrollingRowIndex = firstDisplayedRowIndex;

            }
        }

Is a valid solution but maybe not suitable for the initial developer.

By the way, there is another
_grid.FirstDisplayedScrollingRowIndex = 0;
that should be replaced by
_grid.FirstDisplayedScrollingRowIndex = _grid.Rows.GetFirstRow(DataGridViewElementStates.Visible);
in the
void _scrollbar_Scroll(object sender, System.Windows.Forms.ScrollEventArgs e)

from metroframework-modern-ui.

OToussaint avatar OToussaint commented on August 13, 2024

Duplicate of #81

from metroframework-modern-ui.

tiok-cek1 avatar tiok-cek1 commented on August 13, 2024
protected override void OnMouseWheel(MouseEventArgs e)
        {
            base.OnMouseWheel(e);

            int incrementBy=0; // Don't know yet the direction
            int firstDisplayedRowIndex = Math.Min(Math.Max(this.FirstDisplayedScrollingRowIndex + (e.Delta > 0 ? -1 : 1), 0), this.RowCount-1); // Default next is current +/- 1

I added Min function from your solution.
That solved my problem.
Thanks

from metroframework-modern-ui.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.