MS Word 2010 用のアドインを開発しており、右クリック メニューにいくつかのメニュー項目を追加したいと考えています (テキストが選択されている場合のみ)。アイテムを追加する例をいくつか見ましたが、条件付きでアイテムを追加する方法が見つかりませんでした。つまり、OnRightClick ハンドラーのようなものをオーバーライドしたいと考えています。前もって感謝します。
質問する
4069 次
1 に答える
9
WindowBeforeRightClick
これは非常に簡単です。イベントを処理する必要があります。イベント内で、必要なコマンドバーと特定のコントロールを見つけて、Visible
またはEnabled
プロパティを処理します。
以下の例でVisible
は、選択に基づいてテキストコマンドバーに作成されたカスタムボタンのプロパティを切り替えます(選択に「C#」が含まれている場合はボタンを非表示にし、そうでない場合は表示します)
//using Word = Microsoft.Office.Interop.Word;
//using Office = Microsoft.Office.Core;
Word.Application application;
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
application = this.Application;
application.WindowBeforeRightClick +=
new Word.ApplicationEvents4_WindowBeforeRightClickEventHandler(application_WindowBeforeRightClick);
application.CustomizationContext = application.ActiveDocument;
Office.CommandBar commandBar = application.CommandBars["Text"];
Office.CommandBarButton button = (Office.CommandBarButton)commandBar.Controls.Add(
Office.MsoControlType.msoControlButton);
button.accName = "My Custom Button";
button.Caption = "My Custom Button";
}
public void application_WindowBeforeRightClick(Word.Selection selection, ref bool Cancel)
{
if (selection != null && !String.IsNullOrEmpty(selection.Text))
{
string selectionText = selection.Text;
if (selectionText.Contains("C#"))
SetCommandVisibility("My Custom Button", false);
else
SetCommandVisibility("My Custom Button", true);
}
}
private void SetCommandVisibility(string name, bool visible)
{
application.CustomizationContext = application.ActiveDocument;
Office.CommandBar commandBar = application.CommandBars["Text"];
commandBar.Controls[name].Visible = visible;
}
于 2012-10-29T10:11:27.107 に答える