c#winform自定义窗体(含源码)
Posted dotNET跨平台
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
运行结果如下:
百度网盘下载链接:
链接:https://pan.baidu.com/s/1jI5bo3LxGM2HmJsouK8oMw
提取码:c7ne
技术群: 需要进技术群学习交流的请添加小编微信,切记备注:加群,对U上内容有什么疑问也可以直接和小编直接沟通交流!
小编微信:mm1552923
公众号:dotNet编程大全
以上是关于c#winform自定义窗体(含源码)的主要内容,如果未能解决你的问题,请参考以下文章
C#winform 主窗体上的用户控件怎样调用主窗体的一个方法!
C# 做的winform窗体程序把一个Form给为自定义控件?