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给为自定义控件?

为啥我的C#Winform自定义控件,继承Control类,然后重写onpaint事件,设计窗体拖动时只剩下外框!

关于DevExPress WinForm的MDI窗体问题

Winform 自定义窗体皮肤组件

WinForm里的用户自定义控件如何半透明(急急)