C# Taskpane 跨工作簿显示

C#  vsto com 加载项跨工作簿显示

  1.  
  2.   public excel.Application excelapp;
  3.         private void toggleButton3_Click(object sender, RibbonControlEventArgs e)
  4.         {
  5.          try
  6.             {
  7.                 int hwnd = Globals.ThisAddIn.Application.ActiveWindow.Hwnd;
  8.                 excelapp = (excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("excel.Application");
  9.                 FchartSet chartForm = new FchartSet();
  10.                 if (toggleButton3.Checked == true)
  11.                 {
  12.                     MessageBox.Show("开启导航");
  13.                     if (TaskPanels.TryGetValue(hwnd, out cpt1) == true)
  14.                     {
  15.                         //MessageBox.Show("已存在");
  16.                         cpt1.Visible = true;
  17.                         toggleButton3.Label = "关闭导航";
  18.                         return;
  19.                     }
  20.                     else
  21.                     {
  22.                         //MessageBox.Show("新建");
  23.                         excelapp.WorkbookActivate += new excel.AppEvents_WorkbookActivateEventHandler(Wb激活);//Wb激活
  24.                         cpt1 = Globals.ThisAddIn.CustomTaskPanes.Add(chartForm, "工作簿导航");
  25.                         cpt1.Visible = true;
  26.                         cpt1.Width = 220;
  27.                         cpt1.DockPosition = MsoCTPDockPosition.msoCTPDockPositionLeft;
  28.                         TaskPanels.Add(hwnd, cpt1);
  29.                         cpt1.VisibleChanged += new EventHandler(cpt1_VisibleChanged);
  30.                     }
  31.                     toggleButton3.Label = "关闭导航";
  32.                 }
  33.                 else
  34.                 {
  35.                     //app.WorkbookActivate -= new excel.AppEvents_WorkbookActivateEventHandler(Wb激活);
  36.                     cpt1.Visible = false;
  37.                     MessageBox.Show("关闭导航");
  38.                     toggleButton3.Label = "开启导航";
  39.                 }
  40.             }
  41.             catch (Exception ex)
  42.             {
  43.                 MessageBox.Show(ex.ToString());
  44.             }
  45.             excelapp.ScreenUpdating = true;
  46.       }
  47.  
  48.  public Dictionary<int, Microsoft.Office.Tools.CustomTaskPane> TaskPanels = new Dictionary<int, Microsoft.Office.Tools.CustomTaskPane>();
  49.  public Microsoft.Office.Tools.CustomTaskPane cpt1;
  50.         private void Wb激活(excel.Workbook Wb)//工作簿激活事件
  51.         {
  52.             cpt1.VisibleChanged += new EventHandler(cpt1_VisibleChanged);
  53.             FchartSet chartForm = new FchartSet();
  54.             int hwnd = Globals.ThisAddIn.Application.ActiveWindow.Hwnd;
  55.             if (toggleButton3.Checked == true)
  56.             {
  57.                 if (TaskPanels.TryGetValue(hwnd, out cpt1) == true)
  58.                 {
  59.                     cpt1.Visible = true;
  60.                     return;
  61.                 }
  62.                 else
  63.                 {
  64.                     cpt1 = Globals.ThisAddIn.CustomTaskPanes.Add(chartForm, "工作簿导航");
  65.                     cpt1.Visible = true;
  66.                     cpt1.Width = 220;
  67.                     cpt1.DockPosition = MsoCTPDockPosition.msoCTPDockPositionLeft;
  68.                     TaskPanels.Add(hwnd, cpt1);
  69.                     
  70.                 }
  71.             }
  72.             else
  73.             {
  74.                 if (toggleButton3.Checked == false)
  75.                 {
  76.                     if (TaskPanels.TryGetValue(hwnd, out cpt1))
  77.                     {
  78.                         cpt1.Visible = false;
  79.                         return;
  80.                     }
  81.                     excelapp.ScreenUpdating = true;
  82.                 }
  83.             }
  84.         }
  85.  private void cpt1_VisibleChanged(object sender, EventArgs e)//窗体显示或者隐藏同步ribbon按钮状态
  86.         {
  87.             // 获得Help Ribbon 对象
  88.             Ribbon1 Ribbon = Globals.Ribbons.GetRibbon<Ribbon1>();
  89.             // 同步Help Ribbon下的"帮助"按钮的状态
  90.             Ribbon.toggleButton3.Checked = cpt1.Visible;
  91.             if (cpt1.Visible == true)
  92.             {
  93.                 Ribbon.toggleButton3
  94.                     .Label = "关闭导航";
  95.             }
  96.             else
  97.                 if (cpt1.Visible == false)
  98.             {
  99.                 Ribbon.toggleButton3.Label = "开启导航";
  100.             }
  101.         }
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值