2017-04-10 12 views
0

GetScrollInfoネイティブメソッドを使用してコントロールのスクロール値を取得し、その値を自分のカスタムスクロールバーに設定しています。 SCROLLINFOを使って、システムスクロールバーの最小値、最大値、および大きな変化を見つけることができます。しかし私は得ることができなかったSmallChange値。システムスクロールバーを計算する方法SmallChange値

コードスニペット:

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 = ?? 
    } 

は、システムのスクロールバーの小さな変更を見つけるために、他の代替方法が提供されてあります?

答えて

1

矢印キーのいずれかを押すか、スクロールバーのいずれかのボタンをクリックすると、SmallChangeプロパティで設定された値に従ってValueプロパティが変更されます。

SmallChange(およびLargeChange)プロパティは、ユーザーに表示されるビューのサイズに対して相対的に設定され、見えない部分を含む合計サイズには設定されません。 MSDN

を参照してください。そのため、あなたは完璧な計算を行うために

bar.SmallChange = scrollInfo.nPage/20; 

so postのように、あなたに適しごとに値を設定することができます。

+0

こんにちは@Anil、 お寄せいただきありがとうございます。 SmallChangeを計算するための共通の要因は何ですか? 20はデフォルトですか?または一般的な要素があるかどうかを確認します。 – Adhi

+0

デフォルト値は1 – Anil

+0

私は以下のようなコードを使用しています。bar.SmallChange = Math.Max(1、(scrollInfo.nMax -scrollInfo.nPage)/ 20); 'それは** nPage/20 **ですか?この場合正しい? – Adhi

関連する問題