设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 9280|回复: 4
打印 上一主题 下一主题

【补充】关于VSTO第四课:RIBBON概要

[复制链接]
跳转到指定楼层
1#
发表于 2014-3-20 18:54:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
课程用需要用到的内段代码:

1、LAUNCHER
2、GALLERY
3、TASKPAN
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
 楼主| 发表于 2014-3-20 18:58:11 | 只看该作者
1、LAUNCHER

初始变量
  1.         private ThisAddIn addin;
  2.         private Excel.Application app;

  3.         private AutoSetForm autoSetForm;

  4.         private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
  5.         {
  6.             addin = Globals.ThisAddIn;
  7.             app = addin.Application;

  8.             this.grpModeless1.DialogLauncher.ScreenTip =
  9.                 "ScreenTip\r\nScreenTip\r\n";
  10.             this.grpModeless1.DialogLauncher.SuperTip =
  11.                 "SuperTip\r\nSuperTip\r\n";
  12.         }
复制代码

//模态
  1. private void grpModal_DialogLauncherClick(object sender, RibbonControlEventArgs e)
  2.         {
  3.             //获得窗口
  4.             if (autoSetForm == null || autoSetForm.IsDisposed)
  5.             {
  6.                 autoSetForm = new AutoSetForm();
  7.             }

  8.             //显示
  9.             autoSetForm.ShowDialog();
  10.         }
复制代码

//非模
  1.         //非模态,关联EXCEL
  2.         private void grpModeless1_DialogLauncherClick(object sender, RibbonControlEventArgs e)
  3.         {
  4.             //获得窗口
  5.             if (autoSetForm == null || autoSetForm.IsDisposed)
  6.             {
  7.                 autoSetForm = new AutoSetForm();
  8.             }

  9.             //关联Excel窗口
  10.             IntPtr handel;
  11.             //获得窗口句柄:方法一
  12.             handel = Process.GetCurrentProcess().MainWindowHandle;
  13.             //获得窗口句柄:方法二
  14.             handel = new IntPtr(app.Hwnd);
  15.             //得到父窗口
  16.             NativeWindow win = NativeWindow.FromHandle(handel);

  17.             //显示
  18.             autoSetForm.Show(win);
  19.         }
复制代码

//非模态,不关联EXCEL
  1.         private void grpModeless2_DialogLauncherClick(object sender, RibbonControlEventArgs e)
  2.         {
  3.             //获得窗口
  4.             if (autoSetForm == null || autoSetForm.IsDisposed)
  5.             {
  6.                 autoSetForm = new AutoSetForm();
  7.             }

  8.             //显示
  9.             autoSetForm.Show();
  10.         }
复制代码



3#
 楼主| 发表于 2014-3-20 18:59:13 | 只看该作者
2、GALLERY


加载
  1.         private void gaAuto_ItemsLoading(object sender, RibbonControlEventArgs e)
  2.         {
  3.             gaAuto.Items.Clear();

  4.             RibbonDropDownItem dd1 = this.Factory.CreateRibbonDropDownItem();
  5.             dd1.Tag = "G1";
  6.             dd1.Image = ResGallery.G1;
  7.             gaAuto.Items.Add(dd1);

  8.             RibbonDropDownItem dd2 = this.Factory.CreateRibbonDropDownItem();
  9.             dd2.Tag = "G2";
  10.             dd2.Image = ResGallery.G2;
  11.             gaAuto.Items.Add(dd2);

  12.             RibbonDropDownItem dd3 = this.Factory.CreateRibbonDropDownItem();
  13.             dd3.Tag = "G3";
  14.             dd3.Image = ResGallery.G3;
  15.             gaAuto.Items.Add(dd3);
  16.         }
复制代码

触发

  1.         private void gaAuto_Click(object sender, RibbonControlEventArgs e)
  2.         {
  3.             //获得当前选项
  4.             string tag = gaAuto.SelectedItem.Tag;

  5.             //根据转义的TAG标签执行代码
  6.             switch (tag)
  7.             {
  8.                 case "G1":
  9.                     Process.Start(@"http://www.office-cn.net/forum-375-1.html");
  10.                     break;
  11.                 case "G2":
  12.                     Process.Start(@"http://www.office-cn.net/forum-379-1.html");
  13.                     break;
  14.                 case "G3":
  15.                     Process.Start(@"http://www.office-cn.net/forum-378-1.html");
  16.                     break;
  17.                 default:
  18.                     break;
  19.             }
  20.         }
复制代码



4#
 楼主| 发表于 2014-3-20 19:01:15 | 只看该作者
3、TASKPAN


定义
  1.         //定义属性
  2.         private Tools.CustomTaskPane taskPanAuto;
  3.         public Tools.CustomTaskPane TaskPanAuto
  4.         {
  5.             get { return taskPanAuto; }
  6.         }

  7.         //在ThisAddin中初始化TASKPAN控件
  8.         private void ThisAddIn_Startup(object sender, System.EventArgs e)
  9.         {
  10.             TaskPanAutoView taskPanAutoView = new TaskPanAutoView();
  11.             this.taskPanAuto = this.CustomTaskPanes.Add(taskPanAutoView, "Auto");

  12.             this.taskPanAuto.Width = 300;
  13.             this.taskPanAuto.VisibleChanged += taskPanAuto_VisibleChanged;
  14.         }
复制代码

触发-TASKPAN

  1.         //触发:TASKPAN
  2.         void taskPanAuto_VisibleChanged(object sender, EventArgs e)
  3.         {
  4.             Globals.Ribbons.Ribbon1.togAuto.Checked = this.taskPanAuto.Visible;
  5.         }
复制代码

触发-TOGGLEBUTTON

  1.         private void togAuto_Click(object sender, RibbonControlEventArgs e)
  2.         {
  3.             RibbonToggleButton button = sender as RibbonToggleButton;
  4.             this.addin.TaskPanAuto.Visible = button.Checked;
  5.         }
复制代码

5#
发表于 2014-3-24 23:02:04 | 只看该作者
study
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-25 08:19 , Processed in 0.099844 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表