C#控件美化(button美化)和窗体移动三月软件工作室

一:窗体的移动

       1、去掉边框:

             在winform里边窗体的显示格式就几种,并且都是固定不变的,不能显示自己想要的效果,所以,现在就介绍一下我的窗体美化方式。想要自己的窗体效果,就必须先去掉winform自己的窗体边框,所以修改FormBorderStyle的属性为None,然后就去掉边框了,那么,我们会发现,运行后的窗体不能移动了。很好,接下来就是我重点要说的———窗体的移动。

      2、用到的方法:

           想让窗体移动就不免要用窗体的三个方法:MouseMove方法,MouseDown方法和MouseUp方法;

      3、三个方法的联合使用:

           第一:MouseDown首先获得窗体和鼠标,从而才能把鼠标和窗体绑定在一起为先一步做准备了;

           第二:MouseMoe是让窗体移动的关键,第一步把窗体和鼠标绑定,那么,只要用此方法每时每刻记录鼠标的移动路径就可以让窗体移动了;

           第三:MouseUp是设置鼠标左键抬起的,释放窗体和鼠标的绑定,并且判定是左键按下还是右键按下;

      4、代码展示:

           首先要有 两个全局变量来建立三个方法的连接:

          

           private Point mouseOffset;  //记录鼠标指针的坐标 

           private bool isMouseDown = false; //记录鼠标按键是否按下 

           具体方法:

         

        public void Mousedown(object sender, MouseEventArgs e)

        {

            int xOffset;

            int yOffset;

            if (e.Button == MouseButtons.Left)

            {

                //获取整个窗口在环境中的位置

                xOffset = -e.X - SystemInformation.FrameBorderSize.Width + 10;

                yOffset = -e.Y - SystemInformation.CaptionHeight -

                SystemInformation.FrameBorderSize.Height + 30;

                mouseOffset = new Point(xOffset, yOffset);

                isMouseDown = true;

            }

         }

   

       public void Mousemove(object sender, MouseEventArgs e)

        {

            if (isMouseDown)

            {

                Point mousePos = Control.MousePosition; //获取光标的位置

                mousePos.Offset(mouseOffset.X, mouseOffset.Y);  //窗口的位置位移量

                Location = mousePos;

            }

        }

        public void Mouseup(object sender, MouseEventArgs e)

        {

            // 修改鼠标状态isMouseDown的值 

            // 确保只有鼠标左键按下并移动时,才移动窗体 

            if (e.Button == MouseButtons.Left)

            {

                isMouseDown = false;

            }

        }

二: 控件的美化

       1、去掉了窗体边框,我们也可以让窗体移动了,但是问题又出来了,怎没关闭窗体,怎么最小最大化窗体啊?所以就用到了控件,用按钮来实现它的一切效果了,要用按钮当然少不了Button了,可是,Button的边框可窗体的搭配好不乐观,去掉button的边框我们发现,这样的Button和Label没什么两样了,为了方便起见,我现在就用label了,来美化一下窗体的按钮 ,方法是有点不合理,但是挺好用的,它可以实现为Web一样的所有效果;

        2、美化按钮用到的材料有和方法:想要效果图片,两个Label控件     ,label控件的MouseEnter方法,所在窗口的MouseMove方法;

        3、制作步骤:

             第一:把想要的窗体按钮背景放在窗体上,把其中一个lalel的image属性导入一个同样效果的图片,另一个label的BackColor属性设置为Tranthlation,把visible属性设置为true;

             第二:用到MouseEnter方法;设置另一个label的Visibe属性为false;

             第三:窗体的mouseMove方法可以收鼠标的移动位置,从而判断鼠标是否移动到了控件区域和离开了控件区域,只有把MouseEnter方法和MouseMove方法配合使用才可已达到想要的效果。具体代如下:

           在MouseMove方法里写如下代码: 

            //判断光标是否进入控件区域,如果进入,使其显示

            Rectangle rectangleClose = lblClose.RectangleToClient(this.ClientRectangle);

            if (rectangleClose.Contains(MousePosition))  //判断制定区域是否把光标包含在内

                lblClose.Visible = false;

            else

               lblClose.Visible = true;

            在MouseEnter中写如下代码:lblShow.Visible=false; 

原文地址:https://www.cnblogs.com/marchsoft/p/2942672.html