WinForm 无边框窗体、后台创建控件、timer控件

无边框窗体:

1、控制按钮制作(例:QQ登录界面的关闭按钮)
  放置可以点击的控件,不局限于使用按钮或其他,可以点击出发点击事件即可(例:PictureBox)

  鼠标移入,移出,按下三个事件会让按钮改变样式(改变图片)

  获取图片的相对路径:Application.StartupPath + "\..\..\images\图片名称"

  ..文件夹名称...   向上翻一个文件夹


2、无边框窗体本身不可移动,如何使无边框窗体可以在屏幕上移动
  调用窗体移动的API,需要引用DllImport命名空间

  //窗体移动API
  [DllImport("user32.dll")]
  public static extern bool ReleaseCapture();
  [DllImport("user32.dll")]
  public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int IParam);
  public const int WM_SYSCOMMAND = 0x0112;
  public const int SC_MOVE = 0xF010;
  public const int HTCAPTION = 0x0002;
  [DllImport("user32")]
  private static extern int SendMessage(IntPtr hwnd, int wMsg, int wParam, IntPtr lParam);
  private const int WM_SETREDRAW = 0xB;

  private void Form1_MouseDown(object sender, MouseEventArgs e)
  {
     if (this.WindowState == FormWindowState.Normal)
     {
        ReleaseCapture();
        SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
     }
  }

  如果其它控件覆盖了窗体,需要增加鼠标按下的事件委托


3、无边框窗体阴影


Timer控件:

  Timer在组件里:(主要有以下三个主要属性)
     Enabled  -- 控件是否启用
     Interval  -- 时间间隔,毫秒
     Tick事件  -- 间隔指定时间后要执行的代码段
 
  Timer就是个线程,这个线程默认可以跨线程访问对象

原文地址:https://www.cnblogs.com/hcx999/p/5916856.html