类似VM菜单的简单实现

来源:互联网 发布:js数组slice 编辑:程序博客网 时间:2024/06/09 21:33

1.首先在form中添加一个Panel,

2.Load事件中添加如下代码:

  
            panel1.Margin = new System.Windows.Forms.Padding(0, 0, 0, 0);
            panel1.Location = new Point(panel1.Location.X, 10-panel1.Height);

 

3.添加Panel的mousehover,mouseleave事件

4.定义变量:

        bool updown = true;
        int adddistance = 3;
        bool ismoving = false;
        System.Windows.Forms.Timer timer = new Timer();

        private void panel1_MouseHover(object sender, EventArgs e)
        {
            if (!ismoving)
                if (this.panel1.Location.Y <= 10 - this.panel1.Height)
                    Animation(true);
        }
        private void panel1_MouseLeave(object sender, EventArgs e)
        {
            Animation(false);
        }

5.动画效果:

 private void Animation(bool isdown)
        {
            updown = isdown;

            ismoving = true;
            timer = new Timer();
            timer.Interval = 50;
            timer.Tick += new EventHandler(timer_Tick);
            timer.Start();
        }

        void timer_Tick(object sender, EventArgs e)
        {

            if (updown)//show
                if (this.panel1.Location.Y <= 0)
                {
                    this.panel1.Location = new Point(this.panel1.Location.X,
                        this.panel1.Location.Y + adddistance);
                }
                else
                {
                    //
                    timer.Dispose();
                    ismoving = false;
                }
            else//hide
            {
                if (this.panel1.Location.Y >= 10-panel1.Height)
                    this.panel1.Location = new Point(this.panel1.Location.X,
                        this.panel1.Location.Y - adddistance);
                else
                {
                    timer.Dispose();
                    ismoving = false;
                }
            }
          
        }

 

只是简单的原理实现,回头做好整体后在把源码贴上来吧。。。

 

原创粉丝点击