C高级编程 第6版 含目录

发布 2021-04-23 05:48:28 阅读 7890

。这个方法获得活动文档的计时器,选中 ribbon 菜单中的复选框,以更新文档的复选框:

private void eventinterface_windowactivate( doc, wn)

thisaddin 的**还包含两个实用方法。第一个方法 toggletaskpanedisplay()用于设置 属性,为当前活动的文档显示或隐藏任务面板。

internal void toggletaskpanedisplay()

上述**中的 toggletaskpanedisplay()方法由 ribbon 控件上的事件处理程序调用,如后面所述。 最后,该类有另一个从 ribbon 菜单中调用的方法,它允许 ribbon 控件暂停或恢复文档的计时器:

internal void pauseorresumetimer(bool pause) else if (!pause &

这个类定义中的其他**是 shutdown 的空事件处理程序以及 vsto 为关联 startup 和 shutdown 事件处理程序而生成的**。 接着布置项目中的 ribbon,即 timerribbon,如图 40-14 所示。

图 40-14

这个 ribbon 包含一个 ribbonbutton、一个 ribbonseparator、一个 ribboncheckbox 和一个 dialogboxlauncher。 按钮使用大显示样式, officeimageid 设置为 startafterprevious, 其显示如图 40-13 所示的钟表图像。(这些图像在设计期间不可见)。

ribbon 使用 tabhome 选项卡类型,其内容追加到 home 选项卡上。 ribbon 有 3 个事件处理程序,每个处理程序都调用前面介绍的 thisaddin 中的一个实用方法:

private void group1_dialoglauncherclick(object sender, ribboncontroleventargs e) private void pausecheckbox_click(object sender, ribboncontroleventargs e)

private void toggledisplaybutton_click(object sender, ribboncontroleventargs e)

ribbon 还包含自己的实用方法 setpausestatus(),如前所述,该方法由 thisaddin 中的**调用, 以选中复选框或取消复选框的选中。

internal void setpausestatus(bool ispaused)

这个解决方案中的另一个组件是任务面板中使用的 timerdisplaypane 用户控件, 这个控件的布局如图 40-15 所示。

图 40-15

这个控件包含一个按钮、一个标签和一个列表框--这些都是很普通的显示控件,也可以用更漂亮的 wpf 控件替代它们。 该控件的**保存了对文档计时器的一个本地引用,该引用在构造函数中设置:

public partial class timerdisplaypane : usercontrol public timerdisplaypane(dictionary < string, documenttimer >

documentedittimes) :this()

按钮事件处理程序调用 refreshdisplay()方法刷新计时器的显示:

private void refreshbutton_click(object sender, eventargs e)

refreshdisplay()方法也从 thisaddin 中调用,如前所述。考虑到该方法的任务,这是一个相当复杂的方法,它还检查被监控文档的列表,与已加载文档的列表比较,并解决出现的问题。这段**在 vsto 应用程序中常常是必不可少的, 因为 com office 对象模型的接口偶尔不能像期望的那样工作。

这里的规则是防御式编码。 该方法首先清除 timerlist 列表框中的当前计时器列表:

internal void refreshdisplay()

如果文档名不匹配,就比较文档引用,以检测对文档名的修改,如下面的**所示:

else }

对于未监控的文档,需要创建一个新的监控器:

// add monitor if not monitored if (!ismonitored) 名称改变的文档需要通过用于旧文档的监控器重新关联起来: /rename if necessary if (requiresnamechange)

C高级编程 第6版 目录

第 部分c 语言。1.1 c 与。net的关系1.2.2提高性能。1.3.1面向对象和接口的支持1.3.3强数据类型1.3.5特性的使用1.5 net framework类1.7用c 创建。net应用程序1.9小结2.2.1 2.2.3详细介绍2.3.1变量的初始化2.3.3变量的作用域2.4.1值...

C高级编程 第3版

前言。对于开发人员来说,把c 语言及其相关环境。net framework描述为多年来最重要的新技术一点都不夸张。net提供了一种新环境。在这个环境中,可以开发出运行在windows上的几乎所有应用程序,而c 是专门用于。net的新编程语言。例如,使用c 可以编写出动态web页面 xml web服务...

C高级编程 第48章Syndication

其中onclick属性告诉运行库,在生成窗体的 模型时,把按钮的单击事件包装到triggerbutton click方法中。修改triggerbutton click 中的 注意标签控件类型是从 中推断出来的,所以可以直接在后台 中使用 下面准备运行它。不需要建立项目,只需保存所有的内容,把web浏...