zoukankan      html  css  js  c++  java
  • c# 制作悬浮框

    一,制作winform 窗体

    窗体要做小一点,你见过500*500的悬浮框吗?

    二,去掉边框和标题栏

       this.FormBorderStyle = FormBorderStyle.None;

      运行出来如下所示:

      

    三,在窗体中拖放label 控件

      因为准备在悬浮框中放置gif动画,

              labelex.AutoSize = false;
                    labelex.Left = 0;
                    labelex.Top = 0;
                    labelex.Width = this.Width;
                    labelex.Height = this.Height;

    四,拖拉label事件

    复制代码
    const int WM_NCHITTEST = 0x0084;
            const int HTCLIENT = 0x0001;
            const int HTCAPTION = 0x0002;
            private Point ptMouseCurrrnetPos, ptMouseNewPos, ptFormPos, ptFormNewPos;
            public  bool blnMouseDown = false;
    
            [DllImport("user32.dll")]
            public static extern bool ReleaseCapture();
            [DllImport("user32.dll")]
            public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
    
            public const int WM_SYSCOMMAND = 0x0112;
            public const int SC_MOVE = 0xF010;
            //public const int HTCAPTION = 0x0002;
    
            const int WM_NCLBUTTONDBLCLK = 0xA3;
            public const int WM_RBUTTONDOWN = 0x0204;
            public const int WM_LBUTTONDOWN = 0x0201;
     private void labelex_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    blnMouseDown = true;
                    // Save window position and mouse position
                    ptMouseCurrrnetPos = Control.MousePosition;
                    ptFormPos = Location;
                }
    
                ReleaseCapture();
                //SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
            }
    
            private void labelex_MouseUp(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                    //Return back signal
                    blnMouseDown = false;
            }
    
            private void labelex_MouseMove(object sender, MouseEventArgs e)
            {
                if (blnMouseDown)
                {
                    //Get the current position of the mouse in the screen
                    ptMouseNewPos = Control.MousePosition;
                    //Set window position
                    ptFormNewPos.X = ptMouseNewPos.X - ptMouseCurrrnetPos.X + ptFormPos.X;
                    ptFormNewPos.Y = ptMouseNewPos.Y - ptMouseCurrrnetPos.Y + ptFormPos.Y;
                    //Save window position
                    Location = ptFormNewPos;
                    ptFormPos = ptFormNewPos;
                    //Save mouse position
                    ptMouseCurrrnetPos = ptMouseNewPos;
    
                }
            }
        }
    复制代码

    五,将窗体置于最顶端

      将窗体属性TopMost = True,这样窗体就可以不被其他窗体覆盖,置于屏幕的最顶端了。

      

    六,这样一个简单的悬浮框 就做好了。可以手动尝试一下。

      

  • 相关阅读:
    176. Second Highest Salary
    175. Combine Two Tables
    172. Factorial Trailing Zeroes
    171. Excel Sheet Column Number
    169. Majority Element
    168. Excel Sheet Column Title
    167. Two Sum II
    160. Intersection of Two Linked Lists
    个人博客记录
    <meta>标签
  • 原文地址:https://www.cnblogs.com/asdyzh/p/9932251.html
Copyright © 2011-2022 走看看