CS开发框架自动缩放字体功能
CS开发框架自动缩放字体功能
为了使系统有出色的用户体验和更人性化的界面设计,关爱老人,考虑眼花近视用户群体的使用感受, CS开发框架集成了自动缩放字体的强大功能, 满足用户个性化需求。
设计方案:
1. 设计一个支持字体缩放功能的接口IZoomFont
2. 基类窗体frmBase实现IZoomFont
3. 在基类窗体的KeyDown事件处理用户按键, Ctrl+"-" 为缩小字体, Ctrl+"+" 为放大字体.
4. 基类窗体KeyPreview属性设为True
按Ctrl+"+"或"-"弹出Waiting窗体:
放大字体效果图:
缩小字体后效果图:
IZoomFont 接口:
C# Code:
/// <summary>
/// 支持缩放字段的功能
/// </summary>
public interface IZoomFont
{
/// <summary>
/// 设置控件的字体大小
/// </summary>
/// <param name="fontSize">字体大小</param>
/// <param name="processChilds">是否处理子级</param>
void DoSetFont(float fontSize, bool processChilds);
/// <summary>
/// 设置窗体内某些特殊控件的字体, Dev很多控件的字体必须在Appearance属性内设置
/// </summary>
/// <param name="font">缩放后的字体</param>
void DoSetFontCustom(Font font);
/// <summary>
/// 此控件是否支持缩放功能
/// </summary>
/// <param name="control">当前控件</param>
/// <returns></returns>
bool AllowZoomFont(Control control);
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
/// <summary>
/// 支持缩放字段的功能
/// </summary>
public interface IZoomFont
{
/// <summary>
/// 设置控件的字体大小
/// </summary>
/// <param name="fontSize">字体大小</param>
/// <param name="processChilds">是否处理子级</param>
void DoSetFont(float fontSize, bool processChilds);
/// <summary>
/// 设置窗体内某些特殊控件的字体, Dev很多控件的字体必须在Appearance属性内设置
/// </summary>
/// <param name="font">缩放后的字体</param>
void DoSetFontCustom(Font font);
/// <summary>
/// 此控件是否支持缩放功能
/// </summary>
/// <param name="control">当前控件</param>
/// <returns></returns>
bool AllowZoomFont(Control control);
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
窗体基类frmBase实现IZoomFont接口:
C# Code:
/// <summary>
/// 所有窗体基类
/// </summary>
public partial class frmBase : XtraForm, IFormBase, IZoomFont
{
/// <summary>
/// 标记当前窗体是否支持字体缩放, 正常情况下所有窗体都允许缩放.
/// </summary>
protected bool _EnableZoomFont = true;
/// <summary>
/// 按回车键自动将焦点移到下一输入框
/// </summary>
protected bool _EnterFocusNextControl = true;
// ... 省略 ....
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
/// <summary>
/// 所有窗体基类
/// </summary>
public partial class frmBase : XtraForm, IFormBase, IZoomFont
{
/// <summary>
/// 标记当前窗体是否支持字体缩放, 正常情况下所有窗体都允许缩放.
/// </summary>
protected bool _EnableZoomFont = true;
/// <summary>
/// 按回车键自动将焦点移到下一输入框
/// </summary>
protected bool _EnterFocusNextControl = true;
// ... 省略 ....
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
IZoomFont接口的方法:
C# Code:
#region IZoomFont接口的方法
/// <summary>
/// 设置当前窗体所有控件的字段
/// </summary>
/// <param name="fontSize">新字体</param>
/// <param name="processChilds">处理所有子控件</param>
public void DoSetFont(float fontSize, bool processChilds)
{
try
{
this.SuspendLayout();
Font newFont = new Font(this.Font.FontFamily.Name, fontSize);
ZoomFontTool.SetControlFont(this, newFont, processChilds); //设置当前窗体的字体
this.DoSetFontCustom(newFont); //设置其它控件的字体
}
finally
{
this.ResumeLayout();
}
}
/// <summary>
/// 是否能缩放当前控件的字体大小
/// </summary>
/// <param name="c">当前控件</param>
/// <returns></returns>
public virtual bool AllowZoomFont(Control c) { return true; }
/// <summary>
/// 设置窗体内某些特殊控件的字体, Dev很多控件的字体必须在Appearance属性内设置
/// </summary>
/// <param name="font">缩放后的字体</param>
public virtual void DoSetFontCustom(Font font) { }
#endregion
//来源:C/S框架网(www.csframework.com) QQ:1980854898
#region IZoomFont接口的方法
/// <summary>
/// 设置当前窗体所有控件的字段
/// </summary>
/// <param name="fontSize">新字体</param>
/// <param name="processChilds">处理所有子控件</param>
public void DoSetFont(float fontSize, bool processChilds)
{
try
{
this.SuspendLayout();
Font newFont = new Font(this.Font.FontFamily.Name, fontSize);
ZoomFontTool.SetControlFont(this, newFont, processChilds); //设置当前窗体的字体
this.DoSetFontCustom(newFont); //设置其它控件的字体
}
finally
{
this.ResumeLayout();
}
}
/// <summary>
/// 是否能缩放当前控件的字体大小
/// </summary>
/// <param name="c">当前控件</param>
/// <returns></returns>
public virtual bool AllowZoomFont(Control c) { return true; }
/// <summary>
/// 设置窗体内某些特殊控件的字体, Dev很多控件的字体必须在Appearance属性内设置
/// </summary>
/// <param name="font">缩放后的字体</param>
public virtual void DoSetFontCustom(Font font) { }
#endregion
//来源:C/S框架网(www.csframework.com) QQ:1980854898
处理用户按键事件:
C# Code:
//处理用户按键事件
private void frmBase_KeyDown(object sender, KeyEventArgs e)
{
//按Control键及+/-键调整字体大小
if (e.Control && ((e.KeyCode == Keys.Add) || (e.KeyCode == Keys.Subtract)))
{
//当前窗体不允许缩放字体
if (false == _EnableZoomFont) return;
try
{
if (this.MdiParent != null) this.MdiParent.SuspendLayout();
Cursor.Current = Cursors.WaitCursor;
frmWaiting.ShowMe("正在缩放字体,请稍候......");
Application.DoEvents();
Thread.Sleep(50);
ZoomFontTool.ZoomAll((e.KeyCode == Keys.Add) ? ZoomType.ZoomIn : ZoomType.ZoomOut);
}
finally
{
this.Focus();
Cursor.Current = Cursors.Default;
e.Handled = true;
frmWaiting.HideMe();
if (this.MdiParent != null) this.MdiParent.ResumeLayout();
Application.DoEvents();
}
}
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898
//处理用户按键事件
private void frmBase_KeyDown(object sender, KeyEventArgs e)
{
//按Control键及+/-键调整字体大小
if (e.Control && ((e.KeyCode == Keys.Add) || (e.KeyCode == Keys.Subtract)))
{
//当前窗体不允许缩放字体
if (false == _EnableZoomFont) return;
try
{
if (this.MdiParent != null) this.MdiParent.SuspendLayout();
Cursor.Current = Cursors.WaitCursor;
frmWaiting.ShowMe("正在缩放字体,请稍候......");
Application.DoEvents();
Thread.Sleep(50);
ZoomFontTool.ZoomAll((e.KeyCode == Keys.Add) ? ZoomType.ZoomIn : ZoomType.ZoomOut);
}
finally
{
this.Focus();
Cursor.Current = Cursors.Default;
e.Handled = true;
frmWaiting.HideMe();
if (this.MdiParent != null) this.MdiParent.ResumeLayout();
Application.DoEvents();
}
}
}
//来源:C/S框架网(www.csframework.com) QQ:1980854898

下载ZoomFontTool类及frmWaiting窗体源码:
参考文档:
CSFramework.EF.PostgreSql数据库组件 PostgreSql数据库测试报告|C/S开发框架
CSFrameworkV6快速开发框架 | 使用PostgreSql 数据库测试报告|C/S开发框架
CSFramework WebApi开发框架集成PostgreSql数据库及测试报告|C/S开发框架
CSFrameworkV6旗舰版开发框架 | 集成软件授权认证系统|C/S开发框架
CS软件授权注册系统|WebApi服务器介绍|C/S开发框架
CSFrameworkV6旗舰版|新功能|在线用户查询、设置用户下线|C/S开发框架
CSFramework.Authentication 软件授权证书管理系统|C/S开发框架
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)|C/S开发框架
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)
CSFramework.Authentication 软件授权证书管理系统|C/S开发框架
CSFrameworkV6旗舰版开发框架 | 集成软件授权认证系统|C/S开发框架
CSFrameworkV6软件开发框架+达梦数据库(国产数据库)测试报告|C/S开发框架
CSFrameworkV6软件开发框架 | MySql数据库测试报告|C/S开发框架
CSFrameworkV6软件开发框架 | Oracle数据库测试报告|C/S开发框架
CSFrameworkV6快速开发框架 | SqlServer(MsSql)数据库测试报告|C/S开发框架
CSFramework.EF.PostgreSql数据库组件 PostgreSql数据库测试报告|C/S开发框架
CSFrameworkV6快速开发框架 | 使用PostgreSql 数据库测试报告|C/S开发框架
CSFramework WebApi开发框架集成PostgreSql数据库及测试报告|C/S开发框架
CSFrameworkV6旗舰版开发框架 | 集成软件授权认证系统|C/S开发框架
CS软件授权注册系统|WebApi服务器介绍|C/S开发框架
CSFrameworkV6旗舰版|新功能|在线用户查询、设置用户下线|C/S开发框架
CSFramework.Authentication 软件授权证书管理系统|C/S开发框架
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)|C/S开发框架
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)
C# Winform等待窗体WaitingForm组件下载(CSFramework提供)
CSFramework.Authentication 软件授权证书管理系统|C/S开发框架
CSFrameworkV6旗舰版开发框架 | 集成软件授权认证系统|C/S开发框架
CSFrameworkV6软件开发框架+达梦数据库(国产数据库)测试报告|C/S开发框架
CSFrameworkV6软件开发框架 | MySql数据库测试报告|C/S开发框架
CSFrameworkV6软件开发框架 | Oracle数据库测试报告|C/S开发框架
CSFrameworkV6快速开发框架 | SqlServer(MsSql)数据库测试报告|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
