'슬라이드'에 해당되는 글 1건

  1. 2009.09.19 C# 윈폼 슬라이드메뉴 만들기 by 아르다

웹사이트를 보면 한번씩 메뉴창이 슬라이드로 나오는 것을 본적이 있을겁니다.
심심해서 그런 기능 구현 해보았는데...
생각보다 괜찮을거 같네요...

먼저 윈폼에 패널을 하나 추가하고 로케이션 값을 -160, 50 정도 줍니다.(Y값은 중요하지 않아요)

        public Form1()
        {
            InitializeComponent();
            TimerLord();
        }
        //메뉴패널이 나타날때 사용할 타이머
        private Timer MenuSlideTimerUP = new Timer();
        //메뉴패널이 사라질때 사용할 타이머
        private Timer MenuSlideTimerDOWN = new Timer();

        //타이머들을 셋팅
        private void TimerLord()
        {
            MenuSlideTimerUP.Interval = 50;
            MenuSlideTimerUP.Tick += new EventHandler(MenuSlideTimerUP_Tick);
            MenuSlideTimerDOWN.Interval = 50;
            MenuSlideTimerDOWN.Tick += new EventHandler(MenuSlideTimerDOWN_Tick);

        }
        //슬라이드의 작동상태 
        private bool UPBOOL = false;
        private void panel1_MouseMove(object sender, MouseEventArgs e)
        {
            if (UPBOOL == false)
            {
                UPBOOL = true;
                MenuSlideTimerUP.Start();

            }
        }

        private void panel1_MouseLeave(object sender, EventArgs e)
        {
            if (UPBOOL == true)
            {
                UPBOOL = false;
                MenuSlideTimerDOWN.Start();
            }
        }
        
        private void MenuSlideTimerUP_Tick(object sender, EventArgs e)
        {
            if (MenuSlideTimerDOWN.Enabled == true)
            {
                MenuSlideTimerDOWN.Dispose();
            }
            if (panel1.Left >= 0)
            {
                panel1.Left = 0;
                MenuSlideTimerUP.Stop();
            }
            else panel1.Left += 10;
        }
        private void MenuSlideTimerDOWN_Tick(object sender, EventArgs e)
        {
            if (MenuSlideTimerUP.Enabled == true)
            {
                MenuSlideTimerUP.Dispose();
            }
            if (panel1.Left <= -160)
            {
                panel1.Left = -160;
                MenuSlideTimerDOWN.Stop();
            }
            else panel1.Left -= 10;
        }
마우스를 가져가면 열리고 다시 빼면 닫히는....
좀더 다듬어서 쓰면 쓸만할듯 하네요 ㅎㅎㅎ...
저작자 표시 비영리 동일 조건 변경 허락
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 아르다

댓글을 달아 주세요

티스토리 툴바