2

Excel vsto プロジェクトを開発していますが、リボン コントロールであるクラスでカスタム タスク ペインを処理するにはどうすればよいですか。たとえば、リボン コントロールのボタンをクリックしたときにカスタム タスク ペインを表示したいと考えています。

ドラ

4

3 に答える 3

6

リボン ビジュアル デザイナーを使用して 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;
}

私はしばらく前にプロセスを説明する投稿を書きました。役に立つかもしれません。これは、xml リボンを使用して実行することもできます。

于 2011-11-06T01:44:13.053 に答える
3

これは、Win Forms ユーザー コントロールを使用することで実現できます。私は、MS Word を拡張する必要があり、この機能が必要なプロジェクトに取り組んできましたが、同じ例が Excel にも当てはまります。

私がネットで見つけたもう 1 つの興味深い方法は、Windows ユーザー コントロールを作成し、Windows コントロール内で WPF ユーザー コントロールをホストすることです。もちろん、これにより、WPF で得られるすべての優れたツールを利用できます。以下に例を示します。

1) リボン (ビジュアル デザイナー) にトグル ボタンをドロップします。これは、タスク ペインを非表示にするために使用されます。ToggleButton を使用すると、押したときに強調表示されるため、適切な選択です。

2)トグルボタンのクリックイベントに以下のコードを追加します

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

3) プロジェクトから次のアセンブリへの参照を追加します - WindowsFormsIntegration

4) ThisAddIn.csに、以下に示す 2 つの using ディレクティブを追加します。

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

5) 2 つのユーザー コントロールを追加します。

5.1) ユーザー コントロール (名前 - taskPaneControl1)

5.2)ユーザーコントロール(WPF),(name - 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の Startup イベントに以下の 2 つのコードを追加します。

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

MS Office アプリケーションが開かれると、タスク ペインが非表示になり、Visible プロパティを切り替えて、Startup イベントでこれを変更します。ToggleButton に移動し、数回押して、タスク ペインが期待どおりに表示されていることを確認します。

私のコードのほとんどはここから来た次のリンクも見てください - http://xamlcoder.com/cs/blogs/joe/archive/2007/07/17/using-wpf-with-vsto-office-2007. aspx

于 2011-11-22T07:02:03.423 に答える
0

リボンとタスク ペインは別個のエンティティであるため、これは難しい課題です。主な課題の 1 つは、リボン クラスのインスタンスが 1 つしかなく、各インスペクターの作業ウィンドウのインスタンスが複数あることです。これを適切に行うには、Office の内部構造に関するある程度の高度な理解が必要です。

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

于 2011-11-02T15:32:30.183 に答える