C# 윈폼 슬라이드메뉴 만들기
C#/Tip :
2009. 9. 19. 14:43
웹사이트를 보면 한번씩 메뉴창이 슬라이드로 나오는 것을 본적이 있을겁니다.
심심해서 그런 기능 구현 해보았는데...
생각보다 괜찮을거 같네요...
먼저 윈폼에 패널을 하나 추가하고 로케이션 값을 -160, 50 정도 줍니다.(Y값은 중요하지 않아요)
마우스를 가져가면 열리고 다시 빼면 닫히는....
좀더 다듬어서 쓰면 쓸만할듯 하네요 ㅎㅎㅎ...
심심해서 그런 기능 구현 해보았는데...
생각보다 괜찮을거 같네요...
먼저 윈폼에 패널을 하나 추가하고 로케이션 값을 -160, 50 정도 줍니다.(Y값은 중요하지 않아요)
01 | public Form1() |
02 | { |
03 | InitializeComponent(); |
04 | TimerLord(); |
05 | } |
06 | //메뉴패널이 나타날때 사용할 타이머 |
07 | private Timer MenuSlideTimerUP = new Timer(); |
08 | //메뉴패널이 사라질때 사용할 타이머 |
09 | private Timer MenuSlideTimerDOWN = new Timer(); |
10 |
11 | //타이머들을 셋팅 |
12 | private void TimerLord() |
13 | { |
14 | MenuSlideTimerUP.Interval = 50; |
15 | MenuSlideTimerUP.Tick += new EventHandler(MenuSlideTimerUP_Tick); |
16 | MenuSlideTimerDOWN.Interval = 50; |
17 | MenuSlideTimerDOWN.Tick += new EventHandler(MenuSlideTimerDOWN_Tick); |
18 |
19 | } |
20 | //슬라이드의 작동상태 |
21 | private bool UPBOOL = false ; |
22 | private void panel1_MouseMove( object sender, MouseEventArgs e) |
23 | { |
24 | if (UPBOOL == false ) |
25 | { |
26 | UPBOOL = true ; |
27 | MenuSlideTimerUP.Start(); |
28 |
29 | } |
30 | } |
31 |
32 | private void panel1_MouseLeave( object sender, EventArgs e) |
33 | { |
34 | if (UPBOOL == true ) |
35 | { |
36 | UPBOOL = false ; |
37 | MenuSlideTimerDOWN.Start(); |
38 | } |
39 | } |
40 |
41 | private void MenuSlideTimerUP_Tick( object sender, EventArgs e) |
42 | { |
43 | if (MenuSlideTimerDOWN.Enabled == true ) |
44 | { |
45 | MenuSlideTimerDOWN.Dispose(); |
46 | } |
47 | if (panel1.Left >= 0) |
48 | { |
49 | panel1.Left = 0; |
50 | MenuSlideTimerUP.Stop(); |
51 | } |
52 | else panel1.Left += 10; |
53 | } |
54 | private void MenuSlideTimerDOWN_Tick( object sender, EventArgs e) |
55 | { |
56 | if (MenuSlideTimerUP.Enabled == true ) |
57 | { |
58 | MenuSlideTimerUP.Dispose(); |
59 | } |
60 | if (panel1.Left <= -160) |
61 | { |
62 | panel1.Left = -160; |
63 | MenuSlideTimerDOWN.Stop(); |
64 | } |
65 | else panel1.Left -= 10; |
66 | } |
좀더 다듬어서 쓰면 쓸만할듯 하네요 ㅎㅎㅎ...
'C# > Tip' 카테고리의 다른 글
C# 소켓통신의 개요 (1) | 2009.10.01 |
---|---|
C# RichTextBox 단어별 글자색 지정하기 (0) | 2009.09.22 |
C# 웹에서 파일 다운로드 방법 (0) | 2009.09.16 |
C# XML 의 노드를 추가, 수정, 삭제 하기 (1) | 2009.09.12 |
C# XML에서 자식노드 생성, 값 넣기 (2) | 2009.09.12 |