Winform编程中定制窗体标题栏
2010-09-28 21:50
232 查看
标题栏是否好看关系到软件的美观度,和用户体验,由于Winform的特殊原因,想实现皮肤是件很不爽的事情,但是偶尔做些小软件又不想看到windows讨厌的标题栏,我的方法就是重新设计标题栏,然后用图片做背景,设置所有控件
为透明,这样就大大的美化了软件界面
设置窗体透明和不规则形状
首先,窗体的FormBorderStyle设置成None,不要控制边框
TransparencyKey和BackColor颜色设置成相同的,这样,窗体就透明了
以此为基础,制作透明不规则窗体,可以在窗体上设圆角背景图片(PNG,GIF),也可以绘制
下面还要解决的是无边框窗体的拖动\关闭等事件处理.
关闭提示和最小化到系统托盘
//窗口关闭提示
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("注意:关闭YOMKILLER程序后,你的电脑将不能被保护!\n 确定关闭吗?(Y)/(N)", "初始化", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{
e.Cancel = true;//如果选择no则不关闭程序}
}
//最小化窗口
private void Form1_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
NormalToMinimized();//如果使用button按钮的Click事件,则不需要这个条件判断}}
//双击托盘图标打开
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.MinimizedToNormal();//如果使用的MouseDoubleClick事件,可以不要这个条件判断}}
//设定为默认窗口,显示主窗体 的方法
private void MinimizedToNormal()
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
notifyIcon1.Visible = false;
}
//设定为最小化,并隐藏主窗口 的方法
private void NormalToMinimized()
{
this.WindowState = FormWindowState.Minimized;
this.Visible = false;
this.notifyIcon1.Visible = true;}
模拟窗体移动
1.在窗体的类中声明两个变量
private Point mouseOffset; //记录鼠标指针的坐标
private bool isMouseDown = false; //记录鼠标按键是否按下
2.创建该窗体 MouseDown、MouseMove、MouseUp事件的相应处理程序
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
int xOffset;
int yOffset;
if (e.Button == MouseButtons.Left)
{
xOffset = -e.X ;
yOffset = -e.Y ;
mouseOffset = new Point(xOffset, yOffset);
isMouseDown = true;}}
private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (isMouseDown)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
Location = mousePos;}}
private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
// 修改鼠标状态isMouseDown的值
// 确保只有鼠标左键按下并移动时,才移动窗体
if (e.Button == MouseButtons.Left)
{
isMouseDown = false;}}
标准按钮
1.最小化
WindowState = FormWindowState.Minimized;
2.最大化
WindowState == FormWindowState.Maximized;
3.还原为正常
WindowState == FormWindowState.Normal;
4.关闭
Application.Exit();
为透明,这样就大大的美化了软件界面
设置窗体透明和不规则形状
首先,窗体的FormBorderStyle设置成None,不要控制边框
TransparencyKey和BackColor颜色设置成相同的,这样,窗体就透明了
以此为基础,制作透明不规则窗体,可以在窗体上设圆角背景图片(PNG,GIF),也可以绘制
下面还要解决的是无边框窗体的拖动\关闭等事件处理.
关闭提示和最小化到系统托盘
public frmMain() { InitializeComponent(); //这一句是设定窗体最大化后的大小,如果不设置,窗体最大化以后会挡住任务栏 this.MaximumSize = new Size(SystemInformation.WorkingArea.Width, SystemInformation.WorkingArea.Height);
}
//窗口关闭提示
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
DialogResult result = MessageBox.Show("注意:关闭YOMKILLER程序后,你的电脑将不能被保护!\n 确定关闭吗?(Y)/(N)", "初始化", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.No)
{
e.Cancel = true;//如果选择no则不关闭程序}
}
//最小化窗口
private void Form1_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
NormalToMinimized();//如果使用button按钮的Click事件,则不需要这个条件判断}}
//双击托盘图标打开
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.MinimizedToNormal();//如果使用的MouseDoubleClick事件,可以不要这个条件判断}}
//设定为默认窗口,显示主窗体 的方法
private void MinimizedToNormal()
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
notifyIcon1.Visible = false;
}
//设定为最小化,并隐藏主窗口 的方法
private void NormalToMinimized()
{
this.WindowState = FormWindowState.Minimized;
this.Visible = false;
this.notifyIcon1.Visible = true;}
模拟窗体移动
1.在窗体的类中声明两个变量
private Point mouseOffset; //记录鼠标指针的坐标
private bool isMouseDown = false; //记录鼠标按键是否按下
2.创建该窗体 MouseDown、MouseMove、MouseUp事件的相应处理程序
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
int xOffset;
int yOffset;
if (e.Button == MouseButtons.Left)
{
xOffset = -e.X ;
yOffset = -e.Y ;
mouseOffset = new Point(xOffset, yOffset);
isMouseDown = true;}}
private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (isMouseDown)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
Location = mousePos;}}
private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
// 修改鼠标状态isMouseDown的值
// 确保只有鼠标左键按下并移动时,才移动窗体
if (e.Button == MouseButtons.Left)
{
isMouseDown = false;}}
标准按钮
1.最小化
WindowState = FormWindowState.Minimized;
2.最大化
WindowState == FormWindowState.Maximized;
3.还原为正常
WindowState == FormWindowState.Normal;
4.关闭
Application.Exit();
相关文章推荐
- winform/窗体鼠标事件编程中的几个问题
- Winform自定义窗体样式,实现标题栏可灵活自定义
- C#下WinForm编程:登录窗体的设计
- .NET Winform登录窗体编程设计及数据库表
- C# WinForm:怎样使有标题栏的Form窗体不可移动?
- WinForm之拦截双击标题栏/移动窗体的系统消息
- WinForm编程时窗体设计器中ComboBox控件大小的设置
- C#下WinForm编程:登录窗体的设计
- 界面编程:VC实现自绘窗体标题栏非客户区
- c#winform编程 窗体之间传递参数问题总结(转)
- c#winform编程 窗体之间传递参数问题总结(转)
- WinForm下窗体标题栏上有“帮助”按钮
- 隐藏winform窗体的标题栏
- (转)让鼠标拖动WinForm窗体,模仿鼠标标题栏拖动
- c# WinForm窗体编程中对窗体程序设置快捷键
- WinForm 之 自定义标题栏的窗体移动
- win7中C#的winForm编程使用savefiledialog不能弹出保存窗体的解决方法
- c#winform编程 窗体之间传递参数问题总结(转)
- Winform 防止双击标题栏改变窗体大小 、移动窗体
- C# winform 窗体怎么隐藏标题栏,不显示标题栏