Excel vsto プロジェクトを開発していますが、リボン コントロールであるクラスでカスタム タスク ペインを処理するにはどうすればよいですか。たとえば、リボン コントロールのボタンをクリックしたときにカスタム タスク ペインを表示したいと考えています。
ドラ
Excel vsto プロジェクトを開発していますが、リボン コントロールであるクラスでカスタム タスク ペインを処理するにはどうすればよいですか。たとえば、リボン コントロールのボタンをクリックしたときにカスタム タスク ペインを表示したいと考えています。
ドラ
リボン ビジュアル デザイナーを使用して 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 リボンを使用して実行することもできます。
これは、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
リボンとタスク ペインは別個のエンティティであるため、これは難しい課題です。主な課題の 1 つは、リボン クラスのインスタンスが 1 つしかなく、各インスペクターの作業ウィンドウのインスタンスが複数あることです。これを適切に行うには、Office の内部構造に関するある程度の高度な理解が必要です。
ソリューションは、リボン XML とリボン デザイナーのどちらを使用しているかによっても異なります。どのアプローチを使用していますか?