浏览 2792 次
锁定老帖子 主题:你所不知道的CommandBar
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-29
我们翻开手册(其实没有什么手册,在2007之前,office是没有提供给VBA程序员之外的文档的),发现Application对象上有一个CommandBars属性。我们可以调用其Add方法给它添加一个CommandBar。 application.CommandBars.Add("Spike", MsoBarPosition.msoBarTop, false, true); 问题: 我要是第二次启动是不是会创建第二Spike Command Bar,第三次就有三个了? 我们在word中,把command bar显示出来,然后拖拽到底部。 问题: 再次启动word,这个command bar是在顶部还是在底部? 然后我们把我们的插件卸载了。重新启动word 2003。 问题: Spike Command Bar 还在那里吗? 我们继续翻开手册,发现给command bar添加一个Label也不是什么很难的事情。很简单嘛,一行搞定。 commandBar.Controls.Add(MsoControlType.msoControlLabel, Type.Missing, Type.Missing, Type.Missing, true); 我kao,真TMD的天才。我连Type.Missing都知道用诶。 问题: 这行有错嘛?错误在哪里? 如果要添加的是一个按钮并响应点击事件呢?也很简单,两行搞定 CommandBarButton button = (CommandBarButton) commandBar.Controls.Add(MsoControlType.msoControlButton, Type.Missing, Type.Missing, Type.Missing, true); button.Click += delegate { MessageBox.Show("Hello!"); }; 我要是刚学C#,我都为我自己骄傲。看看,我不但知道它返回的类型是CommandBarButton,还会华丽的delegate语法。 问题: 这行能运行吗?运行起来啥效果? 问题: 第二次启动word,是有一个button还是两个button。 恩,既然自己加一个button能响应点击事件。而且它还有一个参数叫Cancel Default呢。老板正好叫我把Cut按钮给禁用了。简单,找到Cut按钮,响应Click事件,Cancel Default。 CommandBarButton cutButton = (CommandBarButton)application.CommandBars.FindControl(Type.Missing, CUT_BUTTON_CONTROL_ID, Type.Missing, Type.Missing); cutButton.Click += delegate(CommandBarButton ctrl, ref bool cancelDefault) { cancelDefault = true; }; 居然连FindControl都会用,太神奇了。 问题: 这行能用吗?运行起来啥效果? button还有一个state状态。我一行就能toggle它了: button.State = button.State == MsoButtonState.msoButtonDown ? MsoButtonState.msoButtonUp : MsoButtonState.msoButtonDown; You are the genius!~~~ 问题: 我打开了两篇文档,两篇文档对应窗口上的button状态是和文档想关联的。也就是互相状态独立。能做到吗?如果不能,要怎么做? 终结者QA 一天下午,我们PM走过来,创建了一个word的快捷方式在桌面上。把word窗口缩放到一个合适的位置。关闭所有的word实例。然后只见他快速地,迅雷不及掩耳的,说时迟那是快的,三击了word的快捷方式: 问题: 请问有几个word进程 问题: 我的状态独立版的command bar还在那吗?为什么? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |