2009-08-24 13 views
4

Ich erstelle ein Benutzer-Steuerelement, das im Grunde ein Panel (mit zufälligem Inhalt innerhalb) ist, und ich muss in der Lage sein, dieses Panel mit den Tasten (nach oben und unten) statt der Bildlaufleiste auf und ab zu scrollen.WinForm Panel Scrollen ohne Bildlaufleiste?

Der Grund, warum ich es so machen muss, ist, weil das Programm auf einem Touchscreen-Monitor verwendet wird und wir große Tasten statt einer hässlichen kleinen Bildlaufleiste brauchen.

Ich habe mich mit den VerticalScrollbar-Eigenschaften beschäftigt, und keiner von ihnen scheint irgendetwas zu tun. Ich habe festgestellt, dass AutoScrollPosition, wenn ich AutoScroll auf false setze, tatsächlich Koordinaten anzeigt, mit Ausnahme dessen, was es sein sollte. Außerdem habe ich bemerkt, dass panel.VerticalScrollbar.Visible = true; scheint nur zu funktionieren, wenn es außerhalb des Konstruktors platziert ist. Gibt es einen Grund dafür?

Grundsätzlich sind WinForms Scrollbars sehr verwirrend (Buggy?) Für mich. Kennt jemand eine gute Möglichkeit, ein Panel programmgesteuert mit Schaltflächen nach oben oder unten zu scrollen (es ist mir egal, ob ich eine unsichtbare Bildlaufleiste haben muss).

Vielen Dank! = D

Antwort

5

Machen Sie Ihr Benutzersteuerelement ein reguläres Benutzersteuerelement (d. H. Von UserControl anstelle von Panel erben) und platzieren Sie ein Panel auf Ihrem Benutzersteuerelement. Platzieren Sie alle Inhalte/Steuerelemente im inneren Bereich und ändern Sie dann die linken und oberen Eigenschaften des Bereichs, um sie ohne Bildlaufleisten zu verschieben. Sie können Ihrem Benutzersteuerelement auch Schaltflächen hinzufügen, um die Bewegung des inneren Bedienfelds zu steuern.

Ein einfacherer Weg könnte jedoch sein, nur wirklich breite/hohe Bildlaufleisten zu verwenden, und ihre Thumbwidth (ich denke, das ist die Eigenschaft) auf den gleichen großen Wert - das wird Scrollbars erzeugen, die einfach zu verwenden sind Finger. Nach meinem Wissen gibt es keine Möglichkeit, dies mit den Bildlaufleisten zu tun, die in einem Panel mit Autoscroll auf True erscheinen, so dass Sie immer noch die oben erwähnte Methode (mit einem inneren Panel auf Ihrem UserControl) verwenden und die Bildlaufleisten hinzufügen müssen um es selbst zu bewegen.

Ich stimme zu, dass Bildlaufleisten in Windows saugen, so, während ich normalerweise dafür bin, nur die Standard-Steuerelemente zu verwenden, die jeder gewöhnt ist, sehe ich nichts falsch mit dem Rollen in diesem Fall.

+0

Hey, danke für die tolle Antwort MusiGenesis! Ich dachte, dass das Verschieben der Position des Panels der einfachste Weg wäre, es zu tun. Das wollte ich jedoch vermeiden, da die Größe des Panels auf dem darin enthaltenen Material basieren würde, und jetzt muss ich mehr arbeiten, um die Größe des Panels und anderer Dinge herauszufinden. Trotzdem scheint dies der Weg zu sein, den ich gehen werde. Danke noch einmal! – Alex

Verwandte Themen