LoginSignup
4
4

More than 5 years have passed since last update.

ループするページ番号の計算方法

Last updated at Posted at 2012-12-12

概要

最終ページの次ページが先頭ページに、または先頭ページの前ページが最終ページとなるようなページ番号がループする場合に関してのページ番号の計算方法の覚え書き

var nextPage = (currentPage + pages + (step % pages)) % pages // (1)

ここで

  • nextPage: 次のページ番号
  • currentPage: 現在のページ番号
  • pages: 総ページ数
  • step: 進める(戻す)ページ数

説明

stepの絶対値がpages以下であれば、

var nextPage = (currentPage + pages + step) % pages // (2)

でも計算できますが、

currentPage + pages < Math.Abs(step) // ただしstep < 0

の場合に、nextPageがマイナスとなってしまうため、(1)のような面倒な計算式となってます。
逆に、stepの絶対値、ページ数超えねーよというのであれば、(2)で十分です。

追記 (2012/12/12)

C#のプロパティ機構を通して変更する場合、

++hoge.Page;

プロパティへは加算された値が渡されるため、(3)のようにすればよいと思います。

var nextPage = (pages + (value % pages)) % pages // (3)

ここで

  • value :プロパティ機構を通して渡された値
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4