打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c#winform自定义窗体(含源码)

第一步:首先引用DLL

再窗体中继承DevComponents.DotNetBar.OfficeForm

public partial class MainForm : DevComponents.DotNetBar.OfficeForm

初始化程序中添加 this.EnableGlass = false;

public MainForm() { this.EnableGlass = false; InitializeComponent(); }

第二步:重绘标题栏

this.FormBorderStyle = FormBorderStyle.None;

先将原生窗体设置成无边框,FormBoderStyle设置成None
然后添加一个panpel控件设置成窗体的的标题栏,并将panel的dock属性设置为Top;

然后添加四个labell控件充当标题和最小化最大化关闭按钮。

此时界面的原型就出来了。

第三步:最小最大关闭事件

注册事件

this.panelEx1.MouseDown += panel1_MouseDown; this.MouseDown += MainForm_MouseDown;

为事件添加处理方法

private void MinFormLabel_Click(object sender, EventArgs e) {
this.WindowState = FormWindowState.Minimized; }
private void MaxFormLabel_Click(object sender, EventArgs e) { if (this.WindowState != FormWindowState.Maximized) { this.WindowState = FormWindowState.Maximized; } else { this.WindowState = FormWindowState.Normal; } }
private void CloseFormLabel_Click(object sender, EventArgs e) { this.Close(); }

第四步:窗体拖动

[DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); private const int VM_NCLBUTTONDOWN = 0XA1;//定义鼠标左键按下 private const int HTCAPTION = 2; private void MainForm_MouseDown(object sender, MouseEventArgs e) { //为当前应用程序释放鼠标捕获 ReleaseCapture(); //发送消息 让系统误以为在标题栏上按下鼠标 SendMessage((IntPtr)this.Handle, VM_NCLBUTTONDOWN, HTCAPTION, 0); } private void panel1_MouseDown(object sender, MouseEventArgs e) { //为当前应用程序释放鼠标捕获 ReleaseCapture(); //发送消息 让系统误以为在标题栏上按下鼠标 SendMessage((IntPtr)this.Handle, VM_NCLBUTTONDOWN, HTCAPTION, 0); }

运行结果如下:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
c#窗体系统托盘、关闭、最小化事件
WinForm最小化到托盘以及托盘右键菜单
NotifyIcon控件的使用
C#在托盘显示图标
C#实现窗口最小化到系统托盘-程序开发-红黑联盟
详解WinForm窗体间交互的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服