今天下午程序写完,有些时间就搞下界面美化,做个无框窗体。首先把窗体的FormBorderStyle设置为None,就变成无框的啦,不过你会发现这样窗体上就没有原来的最大最小化和关闭按钮了哦,所以要自己补上去。弄个panel放上去,置顶,可以设置panel的背景色和背景图片什么的,详细布局就不赘述啦,见下图,主要是再放三个小panel进去,用来做最小化、最大化、关闭按钮。下面给出三个panel的事件代码。

关闭代码

        private void pnlFormClose_MouseClick(object sender, MouseEventArgs e)
{
DialogResult result = MessageBox.Show("是否退出?", "操作提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
//this.Dispose();
Application.Exit();
}
}

最下化代码

        private void pnlFormMin_MouseClick(object sender, MouseEventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}

这里最小化后可以加入最小化到桌面右下角,http://www.cnblogs.com/wuyouyu/p/3356303.html里已经写了相应代码。

最大化代码,这里窗体正常状态点击则最大化,最大化状态点击则变为常态

        //最大化还原切换
private bool max = false;
private void pnlFormMax_MouseClick(object sender, MouseEventArgs e)
{
if (max)
{
this.WindowState = FormWindowState.Normal;
max = false;
}
else
{
this.WindowState = FormWindowState.Maximized;
max = true;
}
}

最大化后,可以将最大化图片切换下,加句 this.pnlFormMax.BackgroundImage = Properties.Resources.要切换的图片名;

这里说明下BackgroundImage图片导入的时候,有本地资源和项目资源文件两个选项,后者会生成Resources文件夹,存放导入的文件,否则就得写图片的物理地址了。

三个按钮写完,基本工作还是没有结束,运行的时候会发现这个窗体不能拖动,要补充窗体可拖动代码,

//窗体拖动
private Point mousePoint = new Point();
private void pnlCloseBar_MouseDown(object sender, MouseEventArgs e)
{
base.OnMouseDown(e);
this.mousePoint.X = e.X;
this.mousePoint.Y = e.Y;
} private void pnlCloseBar_MouseMove(object sender, MouseEventArgs e)
{
base.OnMouseMove(e);
if (e.Button == MouseButtons.Left)
{
this.Top = Control.MousePosition.Y - mousePoint.Y;
this.Left = Control.MousePosition.X - mousePoint.X;
}
}

到此基本工作做完。

拓展:1、可以加入鼠标经过三个小panel时的效果,分别写MouseDown、MouseEnter、MouseLeave、MouseUp事件,切换下图片就行了。

        private void pnlFormMax_MouseLeave(object sender, EventArgs e)
{
if (!max)
{
this.pnlFormMax.BackgroundImage = Properties.Resources.btn_FrmMax_Normal;
}
else
{
this.pnlFormMax.BackgroundImage = Properties.Resources.btn_FrmRestore_Normal;
}
}

2、可以加入双击窗体上边框,窗体最大化效果等。

3、可以在右上角加入一个小panel作为设置按钮,用户可以自定义皮肤,窗体颜色,或者加入背景图片等。

做个无边框winform窗体,并美化界面的更多相关文章

  1. C# 无边框异型窗体制作

    我是一个C#的初学者 只要涉及到windows窗体编程 都希望窗体的外观比较好看 不是系统默认的那样 对于C# 更改窗体外观感觉并不那么轻松 更改窗体外观涉及到使用GDI+ 我所知道的有两种方法: 有 ...

  2. C#自定义无边框MessageBox窗体

    C#自定义无边框MessageBox窗体 本例子中制作一个无边框的MessageBox窗体 展示效果: 窗体设计 1.添加一个窗体继承原生Form public partial class Messa ...

  3. C# .net WPF无边框移动窗体

    转自 http://download.csdn.net/detail/xiang348352/3095084 WPF无边框移动窗体,先在<Window>里添加 MouseLeftButto ...

  4. Qt中实现无边框的窗体

    1 自定义窗体类继承自QWidget 2 在构造函数中设置无边框效果 setWindowFlags(Qt::FramelessWindowHint);//无边框 setAttribute(Qt::WA ...

  5. WPF无边框移动窗体

    WPF无边框移动窗体,先在<Window>里添加 MouseLeftButtonDown=”Window_MouseLeftButtonDown” 然后导航到事件,在事件里添加 if (e ...

  6. winform学习(9)无边框拖动窗体

    去除边框 选中窗体,在属性中找到FormBorderStyle,设置为None 实现无边框拖动 [DllImport("user32.dll")]        public st ...

  7. WPF 无边框透明窗体

    WindowStyle="None"--无边框,如果需要其它按钮,如缩小.放大.收缩.关闭按钮,可以自定义 AllowsTransparency="True"- ...

  8. WinForm窗体淡入效果界面的简单实现方法

    WinForm窗体淡入效果主要使用到控件的Opacity属性 首先在WinForm窗体中拖入一个Timer控件,然后再Timer控件的Tick事件添加如下代码: private void timer1 ...

  9. WinForm - 窗体淡入效果界面的简单实现方法

    WinForm窗体淡入效果主要使用到控件的Opacity属性 首先在WinForm窗体中拖入一个Timer控件,然后再Timer控件的Tick事件添加如下代码: private void timer1 ...

随机推荐

  1. [caffe]深度学习之图像分类模型VGG解读

    一.简单介绍 vgg和googlenet是2014年imagenet竞赛的双雄,这两类模型结构有一个共同特点是go deeper.跟googlenet不同的是.vgg继承了lenet以及alexnet ...

  2. 分页存储过程--From:桌面备份 -> sql2005新功能.docx

    二.以下示例将返回行号为 50 到 60(含)的行,并以 OrderDate 排序. USE AdventureWorks; GO WITH OrderedOrders AS (SELECT Sale ...

  3. Sql Server2005 Transact-SQL 窗口函数(OVER)

    1.简介: SQL Server 2005中的窗口函数帮助你迅速查看不同级别的聚合,通过它可以非常方便地累计总数.移动平均值.以及执行其它计算.窗口函数功能非常强大,使用起来也十分容易.可以使用这个技 ...

  4. TreeView查获节点并选中节点

    TreeView查获节点并选中节点如果有多个节点则会继续查找下一个节点 支持关键字搜索 private void SearchNodes(string SearchText, TreeNode Sta ...

  5. excel导入数据库iis设置

    导入成功以后,基本这个小项目的所有功能都开发完成了,请IT部门帮我设定了一个固定IP,我以本机作为服务器,在本机IIS上发布了一个测试版,结果上传Excel数据报错, 错误信息“未在本地计算机上注册“ ...

  6. Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/collect/Maps

    加入jar包 http://jarfiles.pandaidea.com/google.collect.html google-collect-1.0.jar.zip ( 504.8 KB )

  7. 安装SQL Server提示“重叠的IO操作正在进行”解决

    单位新做了一个虚机.打算部署一套.Net SQL 的系统 系统是Server 2008 R2,机器除了系统,其它软件都没有. 所以须要安装SQL Server啊,.Net环境啊.配置IIS== 恰巧的 ...

  8. careercup-递归和动态规划 9.5

    9.5 编写一个方法,确定某字符串的所有排列组合. 类似leetcode:Permutations 解法: 跟许多递归问题一样,简单构造法非常管用.假设有个字符串S,以字符序列a1a2a...an表示 ...

  9. Winform之跨线程访问控件(在进度条上显示字体)

    此文章对于遇到必须使用线程但是没有办法在线程内操作控件的问题的处理  有很好的解决方案(个人认为的.有更好的方案欢迎交流.) 在做跨线程访问之前我们先了解下我们所做的需要达到的效果: 这个是批量的将x ...

  10. 采用jsp用表格的形式显示

    <%@page import="cn.hncu.domain.*"%><%@ page language="java" import=&quo ...