UIExtensionSite菜单项(MenuItem)菜单工具栏(Menu strips)按钮按钮工具栏(Toolbar Strips)下面的篇幅中,将要介绍如何使用UIExtensionSite: 步骤: 添加一个UIExtensionSite 在这个例子中,我们添加一个ToolbarStrips类型的UIExtensionSite。打开ShellLayoutView或ShellForm(取决于是否在创建SmartClient工程的时候创建Layout项目),在Toolbox中选中ToolStrip,添加到Designer中,打开属性,在Dock中选中Top,修改Name为“ButtonsBar”。 在Infrastructure.Interface项目中,打开Constants.UIExtensionSiteNames类,添加如下代码: public const string ButtonsBar="ButtonsBar" 将ButtonsBar的名字定义为常量,在UIExtensionSiteNames中,所有的常量必须唯一。在SmartClient中,是以名字作为一个UIExtensionSite唯一标识的。 下面的代码用来注册一个UIExtensionSite WorkItem.UIExtensionSites.RegisteSite(UIExtensionSiteNames.ButtonsBar, this.View.ButtonsBar); 可以将上述代码加到ShellLayoutViewPresenter类的OnViewSet()方法中或加到ShellApplication类的Run方法中(取决于是否在创建SmartClient工程的时候创建Layout项目)。 打开ModuleController.cs,在ExtendToolStrip方法中将一个定义好的按钮加入先前定义好的ButtonsBar中。 ToolStripButton element = new ToolStripButton() //add code here to inital element. WorkItem.UIExtensionSites[Constants.UIExtensionSiteNames.ButtonsBar].Add(new ToolStripButton()); 到目前为止,我们已经将一个按钮加到一个UIExtensionSite中,下一步我们将介绍如何使加入的按钮响应鼠标点击事件,并调用相应的方法。 在CAB中,我们可以使用Command模式来实现事件响应,打开新建模块的Constants.CommandNames类,在该类中,将该按钮鼠标响应事件命令名定义为一个常量: public const string TestButtonClick= "TestButtonClick"; 在ModuleController类中的ExtendToolStrip方法中,加入如下代码: WorkItem.Commands[Constants.CommandNames.TestButtonClick].AddInvoker(element, "Click"); 下面我们将介绍如何将Command绑定到一个方法 在CAB中,我们使用AOP来实现Command方法绑定 [CommandHandler(CommandNames.TestButtonClick)] CommandHandler是CAB中预订义的Attribute,用来申明事件处理方法。 当我们将模块相关的界面元素加到UIExtensionSite中时,如果每个模块自己添加的话,这要求每个模块开发人员需要了解Infrastructure模块的一些细节设计和实现,这对于一个大型应用开发来说是降低效率的,同时也会有很多的冗余代码。因此,我们可以将Infrastructure中的实现细节进行封装,以接口的形式暴露给各个模块,这样业务模块开发人员可以只关心自己本身的业务需求开发,而不用关心基础模块的具体实现,也减少出错的可能。一、添加一个UIExtensionSite
二、注册UIExtensionSite
三、添加一个界面元素到UIExtensionSite中
四、将鼠标响应事件绑定到一个Command
五、书写Command处理函数
public void OnTestButtonClick(object sender, EventArgs e)
{
MessageBox.Show("Successful");
}后续:
2007年8月30日星期四
第四章 如何使用UIExtensionSites
第三章 创建业务模块
- 在一个目录下(一般Source),点击鼠标右键,选择Smart Client Factory -> Add Business Module
- 输入模块名字,确定。
- 一个新的界面弹出,在该界面中,可以决定是否选中“Create an interface library for this module”。如果选中该选项,在创建业务模块的时候,会创建一个Module.Interface项目。
- 点击“Finish”,完成业务模块的创建。
- 创建完成后,在该业务模块项目中会生成如下几个目录:
- Constants - 该目录包含四个类,分别是CommandNames, EventTopicNames, UIExtensionSiteNames, 和WorkspaceNames. 这四个类分别继承了Infrastructure模块中相对应的类。
- Services
- Views
- 同时在ProfileCatalog.xml文件中加入如下配置。
- <Modules>
<ModuleInfo AssemblyFile="Module2.dll" />
</Modules>
- <Modules>
- 创建向导会生成两个类,Module.cs和ModuleController.cs
- 在ModuleController.cs中,向导自动添加了如下方法:
- AddServices - 添加模块实现的服务
- AddViews - 添加视图
- ExtendMenu - 添加菜单选项
- ExtendToolStrip - 添加快捷按钮
Module和ModuleController的详细设计参考后续文档。
第二章 创建SmartClient项目工程
- Menu->file->new->project
- 展开Guidance packages,选择smart client development
- 输入项目名及目录,点击ok
- 选择CAB编译好的DLL目录
Microsoft.Practices.CompositeUI.dll
Microsoft.Practices.CompositeUI.WinForms.dll
Microsoft.Practices.ObjectBuilder.dll
每个Smart Client 项目都需要上述的三个CAB dll文件。
- 选择Enterprise Library DLL目录
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll
Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll
Microsoft.Practices.EnterpriseLibrary.Logging.dll
Microsoft.Practices.EnterpriseLibrary.Common.dll
Smart Client application use these dlls in Enterprise Library to handle Exception and Logging.
- 输入该项目的“根命名空间 namespace”
-
选中第一选项可以决定是否创建一个独立项目来定义Shell的layout
- 点击Finish
- 此时,Smart Client 项目创建成功。
第一章 .Net CAB&SCSF 开发包的安装
第一步:安装Visual Studio 2005 for C#
第二步:安装Guidance Automation Extensions - June 2006
第三步:安装Guidance Automation Toolkit - June 2006
第四步:安装Enterprise Library for .NET 2.0
第五步:安装CAB 1.0
安装完毕,用VSS2005打开Composite项目,编译Source。
第六步:安装SCSF - June 2006
选择CAB编译后DLL目录
2007年4月23日星期一
如何对待抑郁 (转至百度知道)
- 指定一个切合实际的想法,花的精力少,时间少的.每实现一个目标你回增加自信,这样你每天生活在成功中,生活的乐趣会逐渐体现出来,你会快乐很多.
- 坚
持正常活动,千万不能懒,不能因为这样那样的原因打乱自己正常的生活习惯. - 充分肯定自己,要找一个一无事处的人和找一个全能的人一样困难,每个人都有自
己的长处. - 不谈不说不听不涉及关于抑郁的事情.每天都要开开心心的.不要因为这样那样的事使得自己不开心.
- 让自己充实忙碌起来.约朋友吃饭聊天,花更
多的时间在兴趣爱好方面用健康快乐的内容充满大脑,哪还有悲伤的余地? - 要鼓励自己.常常微笑,开心的笑,久而久之会感觉快乐也多了些.
- 善待自己.自己
把自己当作宝贝来疼惜.让自己过得好,制造幸福感,甜蜜的时候不大容易想起悲苦,相反把自己搞得颓废可怜兮兮,只会增加悲凉的气氛.
Powered by ScribeFire.
你为什么不快乐 (转自钱江晚报)
业、家庭各方面都比较顺,不久前,孩子又考进了外地一所重点大学,在常人眼中是喜事连连。可他却说高兴不起来,工作上、家庭里烦心的事很多。比如,孩子在
外地总是不放心,生怕他学习上不努力,学坏样等等。
我知道,这位朋友的思维是进入了一个死角。他看问题的视角是负面、消极的。尽管在旁人眼中,他处在幸福之中,可他感觉不到幸福,却为一些并不存在的事
忧愁,被种种的可怕念头纠缠。我说,老兄,船到桥门自会直,车到山前必有路,孩子的事,就让孩子自己去解决,不要太跟自己过不去。
于是,我想到了这样一个问题:人为什么会不快乐?为什么有些人尽管身处逆境,却整天乐呵呵?有些人事事顺意,却仍然郁郁寡欢?说到底是一个思想意识问
题。弥尔顿在《失乐园》中有一句话:“意识本身可以把地狱造就成天堂,也能把天堂折腾成地狱。”我认为是比较直观地讲出了其中的道理。我们每个人的烦恼和
痛苦都不是因为事情的本身,而是我们看问题的观念和态度。这位朋友就是因为观念比较悲观,结果无形之中给自己增加了许多的压力,把天堂折腾成了地狱。
在生活中经常不快乐的人,一种是思想比较狭隘。这种人,一件小事往往看得很大,很严重。一种是思想比较敏感,明明是在说别人,他却认为是在影射他,神
经过敏,疑神疑鬼,心里不痛快。还有一种是思想悲观。一事当前,总是如履薄冰,如临深渊。在困难中看不到希望,在胜利时又时时担心出问题。“人生不满百,
常怀千岁忧”。这种人,该快乐时快乐不起来,而有了事情就更是沮丧、悲哀了。
著名作家张贤亮写过一篇《心安即福地》的文章,我看了很有同感。在这篇文章里,他回忆了自己18岁从北京携老母弱妹来到宁夏,后来年过不惑而孑然一
身,为省一角钱而步行十五公里去乘车的经历。是的,世事万物即在心,心安了,人也乐了。心不安,即使锦衣玉食、华屋豪车,同样不会快乐。约翰·奈斯比特
说:“我们必须学会把技术的物质奇迹和人性的精神需求平衡起来。”
朋友,在当前越来越激烈的竞争中,努力学会在协调好外部环境的同时,注意调理好个人的内心世界。记住:天堂与地狱,就在你心中。
Powered by ScribeFire.