퇴근5분전

 

모델을 만들고 이걸 컨트롤을 디자인 해서 띄웠더니 구분되는 로직마다 폼이 떠서 창을 세번이나 띄워야 하기에 뭔가 좋은 방법이 없을까 하고

 

만들어봤다. 새로운 작업이력관리 프로그램에 적용도 해보았다.

 

<form>

 

 

< 이전 : x, 다음 : 아래 페이지로 이동 >

< 이전 : 위페이지로, 001 다음 : 아래 페이지로, 002 는 아래 아래 페이지로 >

< 이전 : 위 페이지, 다음 : x >

< 이전 : 위 위 페이지, 다음 : X >

 

 

소스이다.

 

        protected override void OnLoad(EventArgs e)
        {
            uC0011.Next("001", uC001UC0011);
            uC001UC0011.Next("001", uC001UC001UC0011);
            uC001UC0011.Next("002", uC001UC001UC0021);
            base.OnLoad(e);

            uC0011.GoToNext += UC0011_GoToNext;
            uC0011.BackToPrev += UC0011_BackToPrev;

            uC001UC0011.GoToNext += UC001UC0011_GoToNext;
            uC001UC0011.BackToPrev += UC001UC0011_BackToPrev;

            uC001UC001UC0011.BackToPrev += UC001UC001UC0011_BackToPrev;
            uC001UC001UC0021.BackToPrev += UC001UC001UC0021_BackToPrev;

            uC0011.Dock = DockStyle.Fill;
            uC001UC0011.Dock = DockStyle.Fill;
            uC001UC001UC0011.Dock = DockStyle.Fill;
            uC001UC001UC0021.Dock = DockStyle.Fill;

            uC0011.BringToFront();
        }

        private void UC001UC001UC0021_BackToPrev(Control prev)
        {
            prev.BringToFront();
        }

        private void UC001UC001UC0011_BackToPrev(Control prev)
        {
            prev.BringToFront();
        }

        private void UC001UC0011_BackToPrev(Control prev)
        {
            prev.BringToFront();
        }

        private void UC001UC0011_GoToNext(string next, object[] prms)
        {
            switch (next) {
                case "001":
                    uC001UC001UC0011.BringToFront();
                    if (prms != null && 0 < prms.Length)
                    {
                      //  uC001UC001UC0011.SetData("" + prms[0]);
                    }
                    break;
                case "002":
                    uC001UC001UC0021.BringToFront();
                    if (prms != null && 0 < prms.Length)
                    {
                      //  uC001UC001UC0021.SetData("" + prms[0]);
                    }
                    break;

            }
        }

        private void UC0011_BackToPrev(Control prev)
        {
            prev.BringToFront();
        }

        private void UC0011_GoToNext(string next, object[] prms)
        {
            uC001UC0011.BringToFront();
            // prms는 uC001UC0011 에 필요한 정보를 고정된 순서로 전달되며 필요한 데이타 타입으로 캐스팅 해서 사용.

            if (prms != null && 0 < prms.Length)
            {
                uC001UC0011.SetData("" + prms[0]);
            }
        }

 

 

이렇게 form에서는 네비게이터 이동처리만 하고 실제 모듈에 대한 처리는 판넬 내부에서 직접처리하게 만들었다.