インターンシップを行っている会社用に MS-Word アドインを作成しています。
SplitButtons
とがたくさんある新しいリボンを既に作成しましたButtons
。今私がやりたいことは、ボタンの 1 つをクリックすると、コンテンツ コントロールが単語 doc に追加されることです。これは、プレーン コンテンツ コントロールではうまく機能します。これらのコンテンツ コントロールには、XML ファイル内の要素にバインドされた "sport/basketball/player/name" などのタグがあります。
private void addSimpleContentControl(String tag, String placeholder)
{
try
{
contentControlPlain = Globals.ThisAddIn.Application.ActiveDocument.ContentControls.Add(Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlText);
contentControlPlain.Tag = tag;
contentControlPlain.SetPlaceholderText(null, null, placeholder);
}
catch (COMException) { }
}
それでは、私の問題について話しましょう。私の要素のいくつかは、複数回存在する可能性があります。だから私が作成したいのは、複数のプレーン コンテンツ コントロールを保持するリッチ コンテンツ コントロールです。
だから私はSplitButton
「名前」、「背番号」、「位置」などのボタンを持つ「プレーヤー」を持っています.. . そうでない場合は、1 つ作成し、1 つのプレーン コンテンツ コントロールを追加します。
リッチ コンテンツ コントロール -> プレーン テキスト コントロール -> リッチ コンテンツ コントロールの終わり
これまでのところ、これはすべてうまくいきますが、リッチコンテンツコントロールに別のプレーンコンテンツコントロールを追加したい瞬間から、これがポップアップします:
「プレーン テキスト コントロールを他のコントロールまたは XML 要素の周りに挿入することはできません」
プレーン コンテンツ コントロールをリッチ コンテンツ コントロールに追加するコードを次に示します。
private void addContentControlToRich(String tag, String placeholder,String title)
{
Microsoft.Office.Interop.Word.Document doc = Globals.ThisAddIn.Application.ActiveDocument;
foreach (Microsoft.Office.Interop.Word.ContentControl cc in doc.ContentControls)
{
if (cc.Title == title && cc.Type == Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlRichText)
{
try
{
Microsoft.Office.Interop.Word.Range rng = cc.Range;
object oRng = rng;
contentControlPlain = doc.ContentControls.Add(Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlText, ref oRng);
contentControlPlain.Tag = tag;
contentControlPlain.SetPlaceholderText(null, null, placeholder);
contentControlPlain.LockContentControl = true;
break;
}
catch (COMException) { }
}
}
}