C# 引用DevComponents 实现自定义 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 WM_NCLBUTTONDOWN = 0xA1; // 定义鼠标左键按下
private const int HTCAPTION = 2;

private void MainForm_MouseDown(object sender, MouseEventArgs e)
{
    // 为当前应用程序释放鼠标捕获
    ReleaseCapture();
    // 发送消息 让系统误以为在标题栏上按下鼠标
    SendMessage((IntPtr)this.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
}

private void panel1_MouseDown(object sender, MouseEventArgs e)
{
    // 为当前应用程序释放鼠标捕获
    ReleaseCapture();
    // 发送消息 让系统误以为在标题栏上按下鼠标
    SendMessage((IntPtr)this.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
}

运行结果如下:

完整代码下载:

https://download.csdn.net/download/qq_33822544/89785286

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值