2011-10-30 67 views

答えて

0

リボンとタスクペインは別々のエンティティであるため、これは難しい課題です。主な課題の1つは、リボンクラスのインスタンスが1つだけであり、各インスペクタのタスクペインの複数のインスタンスが存在することです。これには、Office内部の詳細な知識が必要です。

ソリューションは、リボンXMLまたはリボンデザイナのどちらを使用しているかによっても異なります。どちらのアプローチを使っていますか?

3

リボンビジュアルデザイナでExcel VSTOアドインを使用しているとします。あなたのアドインのプロパティを経由して、カスタム作業ウィンドウにアクセスすることによって、あなたが望むものを達成することができます

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

...とあなたのリボンにボタンを追加し、クリックイベントのイベントハンドラを追加し、グローバル経由でアドインにアクセス:

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

私はあなたはそれが役に立つかもしれませんdescribes the process、しばらく後にaを書きました。 これはxmlリボンを使用しても実行可能です。

3

これは、Winフォームユーザーコントロールを持つことで実現できます。 私はMS Wordを拡張し、この機能が必要だったプロジェクトで作業しましたが、Excelにも同じ例が適用されます。

私がネット上でつまずいたもう一つの興味深い方法は、Windowsユーザーコントロールを持ち、Windowsコントロール内にWPFユーザーコントロールをホストすることです。 このコースでは、WPFで手に入るすばらしいツールをすべて利用できます。

1)ToggleButtonをリボン(ビジュアルデザイナー)にドロップします。これは、作業ウィンドウを非表示にするために使用されます。 ToggleButtonを使用すると、押したときに強調表示されるので、良い選択です。

2)トグルボタン

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

3のクリックイベントにコードの下に追加します。)は、次のアセンブリへのプロジェクトから参照を追加 - あなたのThisAddIn.csでWindowsFormsIntegration

4)

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

5)2つのユーザーコントロール

0123を追加します。以下に示す2つのusingディレクティブを追加

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)は、MS Officeアプリケーションは、作業ウィンドウを開いている

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

がトグル非表示になりますあなたのThisAddIn.csでStartupイベントに以下の2つのコードを追加します。 Startupイベントでこれを変更するVisibleプロパティ。 移動トグルボタンにし、作業ウィンドウが期待通り

を示していることを確認するために数回はまた、私のコードのほとんどはここから来た次のリンクを見て、それを押してください - http://xamlcoder.com/cs/blogs/joe/archive/2007/07/17/using-wpf-with-vsto-office-2007.aspx

関連する問題