mayho33
Goto Top

Visual Studio C-Sharp Word Add-In - Text zu Fußzeile hinzufügen

Hallo @ All!

Ich soll für einen Kunden ein Word 2010/2013 Add-In erstellen welches eine Fußzeile erstellt und mit TAB getrennt je nach geklicktem Button Text hinzufügt.

Ich bin ein Vollnoob was Add-Ins angeht, aber habe es soweit fertig (Ribbon und Buttons) und auch das Erstellen eines Footers funktioniert (sie Bild).
ribbon

Was nicht funktioniert ist Text anzuhängen. Klickt man z.B. Button1 wird der Text der mit Button2 eingefügt wurde ersetzt anstatt angehängt.

Kann mir da jemand helfen wie ich das umsetzen kann. Stehe voll am Schlauch und Google spuckt nur Blödsinn aus (Oder ich kann es nicht lesen).

Hier der Code aus meiner MyRibbon.xml:

<?xml version="1.0" encoding="UTF-8"?>  
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">  
  <ribbon>
    <tabs>
      <tab id="tab1" label="FUSSZEILE">  
        <group id="group1" label="Hinzufügen">  
          <button id="button1"   
                  label="button1"  
                  screentip="Screentip"   
                  getImage="Btn1_GetImage"   
                  supertip="Supertip"    
                  size="large"   
                  onAction="OnButton"/>  

          <button id="button2"  
                  label="button2"  
                  screentip="Screentip"  
                  getImage="Btn1_GetImage"  
                  supertip="Supertip"  
                  size="large"  
                  onAction="OnButton"/>  
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

Zusätzlicher Code in der ThisAddIn-Klasse laut MS-Best-Practice:
protected override Office.IRibbonExtensibility CreateRibbonExtensibilityObject()
        {
            return new RibbonFooter();
        }

Zusätzlicher Code in der MyRibbon.cs um das PNG für den Button zu laden:
public Bitmap Btn1_GetImage(Office.IRibbonControl control )
        {
            return new Bitmap(Properties.Resources.footer);
        }

ButtonClick-Methode in der MyRibbon-Klasse:
public void OnButton(Office.IRibbonControl control)
        {
            //Add Footer: https://msdn.microsoft.com/en-us/library/ms178795.aspx
            var addIn = Globals.ThisAddIn.Application.ActiveDocument;
            
            foreach (Word.Section wordSection in addIn.Sections)
            {
                Word.Range btn1Range = wordSection.Footers[Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
                btn1Range.InsertAfter("");  
                btn1Range.Font.Size = 20;
                btn1Range.Font.ColorIndex = Word.WdColorIndex.wdBlue;

                switch (control.Id)
                {
                    case "button1":  
                        btn1Range.Text = "Test 1    ";  
                        break;
                    case "button2":  
                        btn1Range.Text = "Test 2    ";  
                        break;
                }
            }
        }


Vielen Dank für die Hilfe!

Grüße, Mayho

Content-Key: 346080

Url: https://administrator.de/contentid/346080

Printed on: April 19, 2024 at 23:04 o'clock

Member: emeriks
emeriks Aug 11, 2017 updated at 16:05:05 (UTC)
Goto Top
Hi,
C# ist jetzt nicht so meine Stärke aber in eta so
btn1Range.Text &= "Test 2    ";  
oder
btn1Range.Text = btn1Range.Text + "Test 2    ";  
E.
Mitglied: 133883
133883 Aug 11, 2017 updated at 16:25:15 (UTC)
Goto Top
&=
Wenn dann aber das Pluszeichen verwenden:
+=
der & Operator hat in C# andere Bedeutung (nicht OP_Addition).

Gruß
Member: mayho33
mayho33 Aug 14, 2017 at 17:30:01 (UTC)
Goto Top
Hi,

funktioniert tatsächlich! Daran hatte ich nicht gedacht. Das Problem dabei: Es wird alles zeilenweise gereiht. Dachte eher an sowas wie "mit TAB getrennt".

Und:
Es sollte eigene Funktionen dafür geben ala: btn1.InsertParagraphAfter(); usw.

Aber Danke schon mal @emeriks!
Member: emeriks
Solution emeriks Aug 14, 2017 updated at 17:50:55 (UTC)
Goto Top
Das Problem dabei: Es wird alles zeilenweise gereiht. Dachte eher an sowas wie "mit TAB getrennt".
Das
btn1Range.Text = btn1Range.Text + "Test 2    ";  
allein fügt keinen Zeilenumbruch ein. Es sei denn, "btn1Range.Text" hat schon einen am Ende oder hinzugefügte Text einen am Anfang. Hier müsste man mal Deine konkreten, echten Code-Zeilen sehen.
Oder der Text wird wegen Überbreite automatisch umgebrochen.
Dachte eher an sowas wie "mit TAB getrennt".
Na dann mach doch.
btn1Range.Text = btn1Range.Text + "\t" + "Test 2    ";  
"\t" ist in C# doch ein Tab, oder? (Ich bin in VB.Net zuhause.)
Es sollte eigene Funktionen dafür geben ala: btn1.InsertParagraphAfter(); usw.
Es sollte ... Keine Ahnung, was Du jetzt meinst. Willst Du das haben? Hast Du das schon mal irgednwo gesehen? Oder bloß irgendwo im Web gelesen und keinen Zusammenhang? Sollte mein Rat dies beinhaltren, damit akzeptabel?

Es gibt eine solche Methode. Aber nicht für einen String sondern für eine Selection.
InsertParagraphAfter Method
Member: mayho33
mayho33 Aug 14, 2017 at 18:35:41 (UTC)
Goto Top
So wie oben. Das ist das Beispiel mit dem ich arbeite face-wink

Nein, nein! Dein Rat war gut! Ich habe nur umgebaut und gesehen, dass ein Zeilenumbruch drinnen ist.

Beispiel schaue ich mir dann gleich an, danke!