Как прокрутить Panel через AutoScroll широким шагом?

190
06 января 2019, 12:50

Подскажите как прокрутить Panel (роликом мыши) через AutoScroll широким шагом, чтобы ширина Panel делилась на две части. К примеру ширина Panel до сужения равна 800 точек, и должна поделиться на 2 при прокрутке. Чтобы в сжатом состоянии на 400 точек, сразу попадать на вторую часть Panel

Растянутое состояние (для добавления чекбоксов)

Сжатое состояние (какими должны быть размеры приложения)

Answer 1

Можно сделать вот так:

private void Panel1_MouseWheel(object sender, MouseEventArgs e)
{
    var stepLength = panel1.Width;
    if (e.Delta < 0)
    {
        if (panel1.HorizontalScroll.Value + stepLength < panel1.HorizontalScroll.Maximum)
        {
            panel1.HorizontalScroll.Value += stepLength;
        }
        else
        {
            panel1.HorizontalScroll.Value = panel1.HorizontalScroll.Maximum;
        }
    }
    if (e.Delta > 0)
    {
        if (panel1.HorizontalScroll.Value - stepLength > panel1.HorizontalScroll.Minimum)
        {
            panel1.HorizontalScroll.Value -= stepLength;
        }
        else
        {
            panel1.HorizontalScroll.Value = panel1.HorizontalScroll.Minimum;
        }
    }
}

Будет лишний скролл в конце/начале прокрутки если соотношение будет не ровно 2, а, например, 2.1

READ ALSO
DataSet и SQL-запросы

DataSet и SQL-запросы

Если какие-то средства, которые позволяют писать запрос(Например, всякие JOIN'ы) к ADONET DataSet и получить в результате какую-нибудь вьюху?

207
Вернуть значение из метода, если не выполняются условия C#

Вернуть значение из метода, если не выполняются условия C#

Как правильно поступить в ситуации, в методе находится ряд условий, если они удовлетворяются, то возвращается значение из словаряКак поступить,...

221
Как сделать пагинацию в Entity Framework Core и API

Как сделать пагинацию в Entity Framework Core и API

Есть поисковой запрос,который выводит значения из базы данныхПроблема в том,что вхождений может быть огромное количество и поэтому хочу...

206
Значение из текста

Значение из текста

Как можно средствами C# получить определенную часть строки?

165