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

本文介绍如何在Windows应用程序中实现无边框窗体,包括控制按钮的制作方法、窗体移动API调用及阴影效果实现。还介绍了如何利用PictureBox作为按钮并响应点击事件,以及如何通过调用特定API实现窗体的移动。最后提到了使用Timer控件的基本方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

无边框窗体:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值