十、自定义窗体

写在前面

最近在做 winform 应用程序,需要自定义一种窗口的样式,所以就随便搞了一个简单的窗口。

效果图

有两种样式,界面如下:
无标题:

有标题:

关键词

1、黑色描边边框

对于窗口去掉原生的边框这个操作很简单【设置FormBorderStyle为None】,但是去掉边框之后略显生硬,所以就考虑如何做一个描边。

方案a:用画笔画出来,但是画出来的描边会被控件挡住,所以作废;
方案b:使用4个label,设置长宽和颜色,设置为最顶层,分别摆放在上下左右四个边缘位置,现在来看效果还不错,因为是控件是最顶层的原因,所以也不会被挡住,【如果你看到此处有什么好主意一定告知一下,先谢过了 ^_^ 】

2、拖动窗口移动

由于设置FormBorderStyle为None的原因,所以原来窗口标题的拖动功能也一并去除了,所以需要重新来手动实现原来标题的移动功能,重写OnMouseMove方法即可,代码如下:

protected override void OnMouseMove(MouseEventArgs e)
{base.OnMouseMove(e);if (e.Button == MouseButtons.Left){//这里一定要判断鼠标左键按下状态,否则会出现一个很奇葩的BUG,不信邪可以试一下~~ReleaseCapture();SendMessage(Handle, 0x00A1, 2, 0);}
}[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

3、关于窗口属性的添加

因为我做了描边的功能,所以相对应的,应该会有一个描边粗细的设置,当然放到属性面板里最好,这里贴一下如何在属性面板里添加新项目:

private int _Border = 1;
[Category("Style")]
[Description("窗体边框粗细")]
[DefaultValue(typeof(int), "1")]
public int Border
{get { return _Border; }set{if (_Border != value){_Border = value;SetBorder();}}
}

具体解释可以再VS看到,都很详细。

源码

下载

C# Winform 窗体美化(十、自定义窗体)相关推荐

  1. C# Winform 窗体美化(目录)

    最近在看 C# Winform 的窗体美化,发现一些很有用的美化皮肤库,学习过后也把一些资料整理一下. 一.IrisSkin 换肤库(IrisSkin4) 二.LayeredSkin 界面库(Laye ...

  2. winform自定义窗体边框样式模板(支持四周边框拖拽改变窗体大小,支持鼠标拖动头部移动窗体)

    winform自己的边框已经过时,但小伙伴们又觉得自定义太过麻烦.本文将手把手教你自定义winform边框样式,并提供源代码链接(可直接作为模板使用).话不多说,直接上操作步骤. 先上一张完成截图 一 ...

  3. 解决winform自定义窗体在扩展显示器最大化不能充满屏幕

    参考:(60条消息) winForm在多显示器(主显示器 + 扩展显示器)上显示最大化和还原操作._梦的远方~的博客-CSDN博客 原因: 我开发用笔记本,缩放设置为150%:同时外接一个扩展屏,缩放 ...

  4. C# WINFORM 自定义窗体 皮肤[转]

    跟我学做c#皮肤美化(一) --概述与导航 每每看着QQ,360等等那些软件漂亮的外衣时,你是不是总是在想我的软件什么时候才能穿上这么漂亮的外衣呢?不过现在当你看到这篇文章的时候不必再发出这样的疑问了 ...

  5. java jframe面板美化,Java-JFrame窗体美化

    Java-JFrame窗体美化 JFrame默认的窗体比较土,可以通过一定的美化,让窗体表现的比较漂亮,具体要根据设计的设计图进行美化: JFrame美化的大致思路:先将JFrame去除默认美化效果, ...

  6. 自定义窗体设计器-控件测试

    自定义窗体设计器-控件测试 基于.net2的自定义窗体设计器控件(类似visual studio的vb,c#设计器,其实就是vs2005的设计器) 控件由四部分组成:工具栏,工具箱,绘图设计区,属性框 ...

  7. Java-JFrame窗体美化

    Java-JFrame窗体美化 JFrame默认的窗体比较土,可以通过一定的美化,让窗体表现的比较漂亮,具体要根据设计的设计图进行美化: JFrame美化的大致思路:先将JFrame去除默认美化效果, ...

  8. 三分钟带你领路Java-JFrame窗体美化

    JFrame默认的窗体比较土,可以通过一定的美化,让窗体表现的比较漂亮,具体要根据设计的设计图进行美化: JFrame美化的大致思路:先将JFrame去除默认美化效果,实现JWindow效果,然后再J ...

  9. winform父窗体实现多个子窗体只能显示一个

    一.前言 当一个父窗体中包含多个动能的时候可能会存在很多子窗体,那么当每个都去打开的时候就会都显示在父窗体上,这样给用户的视觉肯定很不舒服.所以当出现这种情况的时候肯定也会有解决方法,以下就是一种解决 ...

最新文章

  1. ubuntu20更换节点_Ubuntu 20.04 apt 更换国内源的实现方法
  2. gamma分布python代码_Python sympy.stats.NormalGamma()用法及代码示例
  3. 【VMCloud云平台进阶篇】Monitor监控(一)
  4. Charlse 抓包
  5. DataTables怎么给某一列加上click事件
  6. 【Git】GitHub主页从Dark调回Light的方法
  7. webform计算某几列结果_工业CAE案例实战精选|脱硫吸收塔工艺仿真计算系统
  8. vv7无法启动显示发动机故障_发动机电控系统常见故障(发动机不能启动)的解决方法...
  9. Field ‘id‘ doesn‘t have a default value错误解决方法
  10. js数组去重方法分析与总结
  11. java new char 初始化_java考试复习
  12. MPQ Storm库 源代码分析 一个
  13. 眼图测试(硬件测试、信号完整性测试)
  14. Python数据分析高薪实战第二天 python基础语法复习
  15. HTML小游戏——打砖块
  16. Learn English with M / 学习英语的十句经典名言
  17. ngx_thread_pool_init()
  18. vsCode常用插件(汉化,高亮)
  19. 大会员 python
  20. 抖音获取douyin分享口令url API 返回值说明

热门文章

  1. bash shell是如何识别特殊符号的
  2. MIP 技术进展月报:储存功能全新上线,MIP-Cache域名升级,校验更严谨
  3. 高效管理论坛广告贴的小窍门
  4. 源码安装nginx以及平滑升级
  5. Linux下系统与硬件时钟管理
  6. 滤波电容的选择(调试中)
  7. Udp通讯(零基础)
  8. 丢失MySQL root 密码?
  9. Beginning iCloud in iOS 5 Tutorial Part 2(转载)
  10. Windows Phone 7开发一月谈(3)