1

インターンシップを行っている会社用に 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) { }
        }
    }
}
4

2 に答える 2

1

それ以外の

contentControlPlain = doc.ContentControls.Add(Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlText, ref oRng);

使用する

contentControlPlain = richTextControl.Range.ContentControls.Add(Microsoft.Office.Interop.Word.WdContentControlType.wdContentControlText, ref oRng);

上記のコードを使用する前に、以下のコードを使用してください

Application.Selection.Start = lastControlinRichTextControl.Range.End+1;

`oRng = Application.Selection.Range を設定します

于 2013-02-03T20:09:01.500 に答える
0

メッセージによると、コードはリッチ テキスト コントロール (つまり、既存のプレーン テキスト コントロール) 内のすべてをプレーン テキスト コントロールでラップしようとしています。範囲オブジェクトを修正して、それが行われないようにします。たとえば、リッチ テキスト コントロール内のポイントだけに折りたたんでください。

于 2012-04-18T00:32:48.947 に答える