2017-04-10 2 views
0

Ich habe die GetScrollInfo native Methode, um die Bildlaufwerte des Steuerelements zu erhalten und die Werte auf meine benutzerdefinierten Bildlaufleisten festgelegt. Ich kann den minimalen, maximalen, Wert und die große Änderung der Systemlaufleiste finden, indem Sie den SCROLLINFO verwenden. aber ich konnte den SmallChange Wert nicht erhalten.Wie berechnet man die Systemrollbalken SmallChange Wert

Code Snippet:

GetScrollInfo(control.Handle, SB_HORZ, ref hScrollInfo) 

private void UpdateScrollBarValues(ScrollBarBase bar, ref SCROLLINFO scrollInfo) 
    { 
     bar.Minimum = scrollInfo.nMin; 
     bar.Maximum = scrollInfo.nMax; 
     bar.Value = scrollInfo.nPos; 
     bar.LargeChange = scrollInfo.nPage; 
     //How can we calculate or set the 
     //bar.SmallChange = ?? 
    } 

Gibt es eine andere alternative Methode, um die kleine Änderung des Systems Scrollbar zu finden ist verfügbar ??

Antwort

1

Wenn Sie eine der Pfeiltasten drücken oder auf eine der Bildlaufleistenschaltflächen klicken, ändert sich die Value-Eigenschaft entsprechend dem in der Eigenschaft SmallChange festgelegten Wert.

SmallChange- (und auch LargeChange-) Eigenschaften werden relativ zur Größe der Ansicht festgelegt, die der Benutzer sieht, nicht zur Gesamtgröße einschließlich des unsichtbaren Teils. Siehe MSDN

Dafür Sie einen Wert per geeignet Sie einstellen können, wie

bar.SmallChange = scrollInfo.nPage/20; 

Eine weitere so post perfekte Berechnung zu tun.

+0

Hallo @Anil, Danke für Ihren Vorschlag. Was ist der gemeinsame Faktor für die Berechnung von SmallChange? Ist das 20 der Standard? oder ist ein generischer Faktor verfügbar? – Adhi

+0

Der Standardwert ist 1 – Anil

+0

Ich habe den Code wie folgt verwendet: bar.SmallChange = Math.Max ​​(1, (scrollInfo.nMax -scrollInfo.nPage)/20); 'Ist das der ** nPage/20 ** ist richtig in diesem Fall ?? – Adhi