700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c#winform自定义窗体(含源码)

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

时间:2024-07-17 01:14:50

相关推荐

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);}

运行结果如下:

百度网盘下载链接:

链接:/s/1jI5bo3LxGM2HmJsouK8oMw

提取码:c7ne

技术群:需要进技术群学习交流的请添加小编微信,切记备注:加群,对U上内容有什么疑问也可以直接和小编直接沟通交流!

小编微信:mm1552923

公众号:dotNet编程大全

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。