2011-10-30 7 views

回答

0

这是一个艰难的挑战,因为功能区和任务窗格是独立的实体。其中一个主要挑战是每个检查员只有一个Ribbon类实例和任务窗格的多个实例。为此,需要对Office内部进行一些深入的了解。

解决方案还取决于您是使用功能区XML还是功能区设计器。你使用哪种方法?

3

我假设您正在使用带有可视化设计器的Excel VSTO加载项。你可以实现你想要的通过使您的自定义任务窗格通过访问您的外接一个属性:

public partial class ThisAddIn 
{ 
    private CustomTaskPane taskPane; 
    internal CustomTaskPane TaskPane 
    { 
     get 
     { 
     return this.taskPane; 
     } 
    } 

...在你的丝带上增加一个按钮,并添加事件处理click事件,通过全局访问加载项:

private void MyRibbonButton_Click(object sender, RibbonControlEventArgs e) 
{ 
    Globals.ThisAddIn.TaskPane.Visible = true; 
} 

我写了一篇文章而回其describes the process,你会发现它是有用的。 使用xml功能区也是可行的。

3

这可以通过使用Win Forms用户控件来完成。 我曾参与一个项目,我们必须扩展MS Word并需要此功能,但同一个示例将应用于Excel。

我在网上偶然发现的另一个有趣的方式是拥有一个Windows用户控件并在Windows控件中托管一个WPF用户控件! 这个课程允许你利用WPF获得的所有优秀工具,下面是一个例子:

1)在功能区(可视化设计器)上放置一个ToggleButton。这将用于显示隐藏任务窗格。 使用ToggleButton是一个不错的选择,因为按下时突出显示。

2)添加以下代码的切换按钮

Globals.ThisAddIn.TaskPane.Visible = ((RibbonToggleButton)sender).Checked; 

3 click事件)从您的项目引用添加到下列组件 - WindowsFormsIntegration程序

4)在你ThisAddIn.cs添加下面列出的两条使用指令:

using Microsoft.Office.Tools; 
    using System.Windows.Forms.Integration; 

5)添加两个用户控件

5.1)用户控制(名称 - taskPaneControl1)

5.2)用户控件(WPF),(名字 - CON)

用我用过的名字会帮助时,复制/粘贴下面的代码,但通过任何方式改变它,如果你想

6)将以下代码添加到ThisAddIn。CS

public CustomTaskPane TaskPane 
{ 
    get{return taskPaneValue;} 
} 

private TaskPaneControl taskPaneControl1; 
private CustomTaskPane taskPaneValue; 
private WpfControl con; 

internal void AddTaskPane() 
{ 
    ElementHost host = new ElementHost(); 
    con = new WpfControl(); 
    host.Child = con; 
    host.Dock = DockStyle.Fill; 
    taskPaneControl1 = new TaskPaneControl(); 
    taskPaneControl1.Controls.Add(host); 
    taskPaneValue = this.CustomTaskPanes.Add(taskPaneControl1, "My Taskpane"); 
    taskPaneValue.Visible = true; 
} 

6)下方添加到启动事件的两个代码在你ThisAddIn.cs

private void ThisAddIn_Startup(object sender, System.EventArgs e) 
{ 
AddTaskPane(); 
taskPaneValue.Visible = false; 
} 

当MS Office应用程序打开时,任务窗格将被隐藏的切换可见属性在启动事件中更改此设置。 导航到切换按钮,按了几次,以确保任务窗格显示如预期

也有看看下面的链接我的大多数代码从这里走过 - http://xamlcoder.com/cs/blogs/joe/archive/2007/07/17/using-wpf-with-vsto-office-2007.aspx

相关问题