Microsoft VSrollBar Verhalten oder Fehler mit Touchscreen - Windows Forms

Ich habe bei VScrollBar ein seltsames Verhalten festgestellt (vertikale Bildlaufleiste in der Visual Studio-Toolbox verfügbar). Das Problem ist "wenn ich auf der Bildlaufleiste nach unten wische, wird sie nach oben verschoben. Wenn ich nach oben wische, bewegt es sich nach unten ".

Steps, um Fehler oder Verhalten zu replizieren - 1

1) Fügen Sie VScrollBar als untergeordnetes Element zu einem Benutzersteuerelement hinzu.

2) Streichen Sie auf dem Bedienelement nach oben oder unten (nicht auf der Bildlaufleiste). Die vertikale Bildlaufleiste bewegt sich in die entgegengesetzte Richtung, auch wenn keine programmgesteuerte Verbindung zwischen Inhalt und VScrollBar @ besteh

Steps, um Fehler oder Verhalten zu replizieren - 2

1) Fügen Sie VScrollBar als untergeordnetes Element zu einem Benutzersteuerelement hinzu.

2) Streichen Sie über die Bildlaufleiste, sie bewegt sich beim Wischen nach oben und unten beim Wischen nach unten (korrektes Verhalten).

3) Streichen Sie auf der Benutzersteuerung nach oben oder unten. Vertikale Bildlaufleiste bewegt sich in die entgegengesetzte Richtung

4) Streichen Sie nun über die vertikale Bildlaufleiste nach oben oder unten. Die vertikale Bildlaufleiste beginnt sich in die entgegengesetzte Richtung zu bewege

Einfache Steuerung mit vertikaler Bildlaufleiste, um dieses Verhalten zu replizieren

public class QuickViewer : Control
{
    public QuickViewer()
    {
        // Designer generated code
        // Copy pasted for illustration alone

        this.vScrollBar1 = new System.Windows.Forms.VScrollBar();
        this.SuspendLayout();
        // 
        // vScrollBar1
        // 
        this.vScrollBar1.Location = new System.Drawing.Point(420, 4);
        this.vScrollBar1.Name = "vScrollBar1";
        this.vScrollBar1.Size = new Size(this.vScrollBar1.Width, 292);            
        // 
        // QuickViewer
        //             
        this.Controls.Add(this.vScrollBar1);
        this.Name = "QuickViewer";
        this.Size = new System.Drawing.Size(441, 296);
        this.vScrollBar1.Value = 5;        
        this.ResumeLayout(false);
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        //My actual control is different. I prepared a simple control to replicate the buggy behavior of VScrollBar

        //Control border
        Pen borderPen = new Pen(Color.LawnGreen, 5);
        e.Graphics.DrawRectangle(borderPen, ClientRectangle);
        borderPen.Dispose();

        //View area
        Rectangle rect = new Rectangle(ClientRectangle.Location, ClientRectangle.Size);
        rect.Inflate(-25, -10);
        e.Graphics.FillRectangle(Brushes.White, rect);
        e.Graphics.DrawRectangle(Pens.Black, rect);
        this.Font = new System.Drawing.Font("Segoe UI", 12, FontStyle.Bold);
        StringFormat format = new StringFormat() { Alignment = StringAlignment.Center };
        e.Graphics.DrawString("Quick viewer", this.Font, Brushes.Black, rect, format);
        string content = "This is a control created to illustrate the bug in VScrollBar." +
            "\n Control area refers to the area with white background" +
            "\n Control and Vertical Scrollbar are not programatically connected with each other."
            + "But still VScrollBar moves if you swipe on control area";

        Font font = new System.Drawing.Font("Segoe UI", 12, FontStyle.Italic);
        rect.Y += 20;
        e.Graphics.DrawString(content, font, Brushes.Black, rect, format);

        font.Dispose();
        format.Dispose();
        base.OnPaint(e);
    }

    /// <summary> 
    /// Required designer variable.
    /// </summary>
    private System.ComponentModel.IContainer components = null;

    /// <summary> 
    /// Clean up any resources being used.
    /// </summary>
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
    protected override void Dispose(bool disposing)
    {
        if (disposing && (components != null))
        {
            components.Dispose();
        }
        base.Dispose(disposing);
    }


    private System.Windows.Forms.VScrollBar vScrollBar1;

}

Frage

Gibt es eine Möglichkeit, dieses Verhalten oder diesen Fehler zu beheben? Ich möchte, dass die Bildlaufleiste beim Wischen nach unten und beim Wischen nach oben bewegt wird. Es sollte kein Bildlauf stattfinden, wenn Sie über den Inhalt wischen

Antworten auf die Frage(4)

Ihre Antwort auf die Frage