zoukankan      html  css  js  c++  java
  • 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就是个线程,这个线程默认可以跨线程访问对象

  • 相关阅读:
    java回顾之多线程
    java回顾之异常
    模拟斗地主和冒泡排序
    java回顾之Map
    java回顾之集合List
    java回顾之树
    java回顾之单列集合、泛型、数据结构
    java回顾之类API再体验之引用类型小结
    java回顾之API初体验
    函数之 闭包函数 和 装饰器
  • 原文地址:https://www.cnblogs.com/hcx999/p/5916856.html
Copyright © 2011-2022 走看看