zoukankan      html  css  js  c++  java
  • 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; 

  • 相关阅读:
    T4模板+Web.config连接SqlServer+DBManage.cs+DbHelper.cs
    MVCApplication
    MVC路由(Route)
    过滤器+用session验证是否登陆过
    前台.cshtml得到session值方法
    C++ sort() method with 1.default operator,2 stand library compare ,3custom function,4,lambda expression
    C++ boost serialize struct to text
    C++ multi thread via pthread to retrieve returned result
    C++ pthread create and join
    C++ write and read file via fstream in ios::out,ios::in,ios::app mode
  • 原文地址:https://www.cnblogs.com/marchsoft/p/2942672.html
Copyright © 2011-2022 走看看