无边框窗体:
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就是个线程,这个线程默认可以跨线程访问对象