类似VM菜单的简单实现

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;
                }
            }
          
        }

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值