C# 윈폼 슬라이드메뉴 만들기
C#/Tip :
2009. 9. 19. 14:43
웹사이트를 보면 한번씩 메뉴창이 슬라이드로 나오는 것을 본적이 있을겁니다.
심심해서 그런 기능 구현 해보았는데...
생각보다 괜찮을거 같네요...
먼저 윈폼에 패널을 하나 추가하고 로케이션 값을 -160, 50 정도 줍니다.(Y값은 중요하지 않아요)
좀더 다듬어서 쓰면 쓸만할듯 하네요 ㅎㅎㅎ...
심심해서 그런 기능 구현 해보았는데...
생각보다 괜찮을거 같네요...
먼저 윈폼에 패널을 하나 추가하고 로케이션 값을 -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;
}
마우스를 가져가면 열리고 다시 빼면 닫히는....좀더 다듬어서 쓰면 쓸만할듯 하네요 ㅎㅎㅎ...
'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 |


