퇴근5분전



간단하게 1,2,3,4,5,6,7,8,9,10 이란 목록을

1~10 ~ 다시 1부터 시작  ~ 10... 계속...

이런식으로 루프 되듯이 자료를 열람하는 로직을 만들때..

예 )   이미지 검색... ,문자열 흘리기등...

페이지 검색등... 도 괜찮을것 같공...

아래는 Source는 위에 나열된 10개의 숫자.

보여줄 View는 TextBox 4개로 지정..

<< 이미지 >>

1,2,3,4 가 처음 보이고 > 누르면 다음 페이지 또는 증가 숫자만큼.. 다음 리스트가 출력
< 반대로... 


간단한 알고리즘이지만... 문득.. 떠올라서 글을 써봄.

처음 문자열 흘리기 할때나. 게임 챗팅처럼 만든다고 index 값을 복잡하게 계산했던때보다는 훨씬 깔끔함..

나중에 class로 묶어두면 요기조기 써먹을데가 있을것도 같은데...

 public partial class Form1 : Form
    {
        const int viewCnt = 4; // 보여줄 View갯수.
        int totalCnt = 0;

        public Form1()
        {
            InitializeComponent();
            string[] source = this.textBox5.Text.Split(',');
            View(source);

        }

     

        int[] ViewArray  = new int[viewCnt] {0,1,2,3};

        private void button1_Click(object sender, EventArgs e)
        {
            LoopItem( +4 );
        }

        private void button2_Click(object sender, EventArgs e)
        {
            LoopItem( -4 );
        }

        private void LoopItem(int leftRight)
        {
            string[] source = this.textBox5.Text.Split(',');
            totalCnt = source.Length;
            for (int i = 0; i < viewCnt; i++)
            {
                ViewArray[i] = (ViewArray[i] + leftRight) % totalCnt;
                if (ViewArray[i] < 0)
                {
                    ViewArray[i] = 10 + ViewArray[i];
                }
            }
            View(source);
        }

        private void View(string[] source)
        {
            this.textBox1.Text = source[ViewArray[0]];
            this.textBox2.Text = source[ViewArray[1]];
            this.textBox3.Text = source[ViewArray[2]];
            this.textBox4.Text = source[ViewArray[3]];
        }

 }