NET快速开发实践之应用IExtenderProvider实现输入法自动切换
2011-05-08 22:49
686 查看
我在前面的.NET快速开发实践中的IExtenderProvider扩展组件和.NET快速开发实践之应用IExtenderProvider实现对象与UI控件的绑定两篇Post介绍了IExtenderProvider扩展编程模式和应用IExtenderProvider实现实体与对象的做法与例子,下面我为介绍一下在管理信息系统开发中一个常用的功能,输入法的切换,很多在线事务处理系统业务量非常的繁忙,在特定的某个时刻,比如在his应用中的挂号、收费,窗口业务中业务办理者排着长长的队,这样就对系统的办事速度有着严格的要求,软件UI上,有的地方需要在中文输入法状态输入汉字,但有的要求在非中文输入法状态中完成,比如数字类的输入,在中文状态下输入的是全角数字,在这种应用情况下,我们需求达到下图的效果:
在容许输入中文的情况下,比如姓名,自动打开中文输入法:
而在非中文输入的情况下,如年龄,自动关闭中文输入法状态:
那么,这样的需求我们如何实现呢,实现的方法或者很多,我只说IExtenderProvider扩展实现的方法,在AgileEAS.NET平台中集成了一个叫ChineseLanguageInput的小组件来完成这个功能,下面我就把ChineseLanguageInput的实现跟大家看看:
这里还用到一个类型Language:
上面就是ChineseLanguageInput组件的所有源码,怎么用呢,一样的方式,拖上面,在控件上设计输入法状态:
就弄到这吧,也不搞个demo了,组件源码都贴了,朋友们自己试吧。
QQ群:120661978,125643764
链接:AgileEAS.NET应用开发平台介绍
AgileEAS.NET之敏捷并行开发方法
敏捷软件工程实验室
在容许输入中文的情况下,比如姓名,自动打开中文输入法:
而在非中文输入的情况下,如年龄,自动关闭中文输入法状态:
那么,这样的需求我们如何实现呢,实现的方法或者很多,我只说IExtenderProvider扩展实现的方法,在AgileEAS.NET平台中集成了一个叫ChineseLanguageInput的小组件来完成这个功能,下面我就把ChineseLanguageInput的实现跟大家看看:
[ToolboxItem(true)] [Description("输入法控件与自动切换组件")] [ProvideProperty("Language", typeof(Component))] public class ChineseLanguageInput:Component, IExtenderProvider { private Dictionary<Control, InputLanguage> inputLanguageList = new Dictionary<Control, InputLanguage>(); private InputLanguage input = InputLanguage.CurrentInputLanguage; public ChineseLanguageInput() { } public ChineseLanguageInput(System.ComponentModel.IContainer container) { container.Add(this); } [Category("输入法")] [Description("获取/设置控件的输入法状态")] public Language GetLanguage(Control component) { if( inputLanguageList.Contains( component )) { return (Language)inputLanguageList[ component ]; } return Language.Default; } public void SetLanguage(Control component, Language c) { if (inputLanguageList.Contains(component) != true) { inputLanguageList.Add(component, c); System.Windows.Forms.Control currentC = (System.Windows.Forms.Control)component; currentC.Enter += new EventHandler(this.currentC_Enter); } else { inputLanguageList[component] = c; } } private void currentC_Enter(object sender, EventArgs e) { System.Windows.Forms.Control control = (System.Windows.Forms.Control)sender; if (this.GetLanguage(control) == Language.Chinese) { InputLanguage.CurrentInputLanguage = this.input; } else if (this.GetLanguage(control) == Language.English) { if (!object.Equals(InputLanguage.CurrentInputLanguage, InputLanguage.InstalledInputLanguages[0])) { this.input = InputLanguage.CurrentInputLanguage; } InputLanguage.CurrentInputLanguage = InputLanguage.InstalledInputLanguages[0]; } } #region IExtenderProvider 成员 bool IExtenderProvider.CanExtend(object component) { return component is System.Windows.Forms.Control; } #endregion }
这里还用到一个类型Language:
/// <summary> /// 输入法语言。 /// </summary> public enum Language { /// <summary> /// 默认,不管他。 /// </summary> Default = 0, /// <summary> /// 英文输入法状态。 /// </summary> English = 1, /// <summary> /// 中文输入法状态。 /// </summary> Chinese = 2 }
上面就是ChineseLanguageInput组件的所有源码,怎么用呢,一样的方式,拖上面,在控件上设计输入法状态:
就弄到这吧,也不搞个demo了,组件源码都贴了,朋友们自己试吧。
QQ群:120661978,125643764
链接:AgileEAS.NET应用开发平台介绍
AgileEAS.NET之敏捷并行开发方法
敏捷软件工程实验室
相关文章推荐
- .NET快速开发实践之应用IExtenderProvider实现输入法自动切换
- .NET快速开发实践之应用IExtenderProvider实现对象与UI控件的绑定
- .NET快速开发实践之应用IExtenderProvider实现控件焦点跳转
- .NET快速开发实践之应用IExtenderProvider实现控件焦点跳转
- .NET快速开发实践中的IExtenderProvider扩展组件
- .NET快速开发实践中的IExtenderProvider扩展组件
- .NET快速开发实践中的IExtenderProvider扩展组件(转)
- 基于元数据配置的asp.net数据库应用快速开发框架设计及实现
- c#实现的自动采集代理服务器和IP自动切换程序(C#.NET)
- [转]ASP.NET 2.0如何实现数据库应用开发
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务
- 应用springMVC快速开发PDF/EXCEL报表方案及实现
- iphone ipad 开发应用内实现多语言自由切换
- 告别ADO.NET实现应用系统无缝切换的烦恼(总结篇)
- [Cocoa]_[初级]_[Cocoa开发应用实现多语言之间自由切换]
- 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换
- 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- OpenJWeb快速开发平台自动创建基于事务的业务逻辑接口和实现类
- node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用