Vereisten: Gebruik VSTO om een eenvoudige plug-in voor Office te ontwikkelen, zoals het verkrijgen van de Word-plugin voor Chinese tekenlengte.
Word-objectmodel
Word biedt honderden objecten om mee te interageren. Deze objecten zijn georganiseerd in een hiërarchie die strikt de gebruikersinterface volgt. Het Application-object staat bovenaan de hiërarchie. Dit object vertegenwoordigt de huidige instantie van Word. Het applicatieobject bevat de objecten Document, Selectie, Bladwijzer en Bereik. Elk van deze objecten heeft een aantal methoden en eigenschappen die gebruikt kunnen worden om het object te manipuleren en ermee te interageren.
De volgende afbeelding toont een weergave van deze objecten in de Word-objectmodelhiërarchie.
Documentatie:De hyperlink-login is zichtbaar.
Toepassingsobject
Het applicatieobject vertegenwoordigt de Word-applicatie en is de ouder van alle andere objecten. De leden worden meestal toegepast op Word als geheel. Je kunt de eigenschappen en methoden gebruiken om de Word-omgeving te besturen.
In een VSTO-add-in project kun je het ThisAddIn-object benaderen door gebruik te maken van de Application-velden van de Application-klasse.
In een documentniveau project kan het ThisDocument-object worden benaderd door gebruik te maken van de applicatie-eigenschap van de Application-klasse.
Documentobject
Het Document-object is het centrum van Word-programmering. Het vertegenwoordigt een document en al zijn inhoud. Wanneer je een document opent of een nieuw document aanmaakt, wordt er een nieuw Document-object aangemaakt en toegevoegd aan de applicatiecollectie van het Documenten-object. Een document met een focus staat bekend als een actief document. Het wordt weergegeven door de applicatie-eigenschap van het ActiveDocument-object.
Wanneer je een documentniveau project aanmaakt, kun je toegang krijgen tot het ThisDocument-lid door gebruik te maken van de Document-klasse die in het project is gegenereerd. Het ThisDocument-object kan worden benaderd door het Me of this keyword voor code in de Document-klasse te gebruiken, of door Globals.ThisDocument te gebruiken voor code buiten de ThisDocument-klasse.
Selectieobject
Het Selection-object vertegenwoordigt het momenteel geselecteerde gebied. Wanneer je een actie uitvoert in de Word-gebruikersinterface, zoals het vetgedrukt maken van tekst, kun je de tekst selecteren of markeren en vervolgens de opmaak toepassen. Het Selection-object is altijd aanwezig in het document. Als er niets wordt gecontroleerd, geeft dat een inbrengpunt aan. Daarnaast kan de geselecteerde inhoud meerdere niet-aangrenzende tekstblokken bevatten.
Afstandsobject
Het Range-object vertegenwoordigt aangrenzende gebieden in het document en wordt gedefinieerd door de posities van het begin- en eindkarakter. Het is niet beperkt tot één Range-object. Je kunt meerdere Range-objecten in hetzelfde document definiëren. Afstandsobjecten hebben de volgende kenmerken:
- Het kan alleen individuele invoegpunten bevatten, of een tekstbereik of het hele document bevatten.
- Het bevat niet-gedrukte tekens zoals spaties en tabbladen en alineamarkeringen.
- Het kan het gebied zijn dat wordt weergegeven door de momenteel geselecteerde inhoud of het gebied dat verschilt van deze inhoud.
- Het is niet zichtbaar in het document, in tegenstelling tot de geselecteerde inhoud, die altijd zichtbaar is.
- Het wordt niet opgeslagen met de documentatie en bestaat alleen wanneer de code draait.
- Wanneer tekst aan het einde van een bereik wordt ingevoegd, breidt Word het bereik automatisch uit om de ingevoegde tekst op te nemen.
Inhoudscontroleobjecten (Inhoudscontroleobjecten)
ContentControl biedt een manier om de invoer en rendering van tekst en andere soorten inhoud binnen een Word-document te controleren. ContentControl kan veel verschillende typen UI weergeven die geoptimaliseerd zijn voor gebruik in Word-documenten, zoals tekstcontroles met meerdere berichten, datumkeuzes of combinatieboxen. Je kunt ContentControl ook gebruiken om te voorkomen dat gebruikers bepaalde delen van een document of sjabloon bewerken.
Visual Studio breidt het ContentControl-object uit naar verschillende hostbesturingselementen. Hoewel het ContentControl-object alle verschillende soorten UI's toont die beschikbaar zijn voor contentcontrole, biedt Visual Studio voor elke contentcontrole een ander type. Je kunt bijvoorbeeld RichTextContentControl gebruiken om een tekstcontrole met meerdere berichten te maken, of je kunt DatePickerContentControl gebruiken om een datumkiezer te maken. Deze hostcontroles gedragen zich vergelijkbaar met native ContentControls, maar beschikken ook over extra event- en databindingsmogelijkheden.
Bladwijzerobject
Het Bookmark-object vertegenwoordigt aangrenzende gebieden in een document met zowel begin- als eindposities. Je kunt bladwijzers gebruiken om een locatie in het document aan te geven of als container voor de Chinese versie van het document. Een bladwijzerobject kan insertiepunten bevatten of zo groot zijn als het hele document. Bookmark heeft de volgende kenmerken die het onderscheiden van Range-objecten:
- Je kunt bladwijzers benoemen bij het ontwerpen.
- Het Bookmark-object wordt samen met het document opgeslagen, dus het wordt niet verwijderd wanneer de code stopt met draaien of het document wordt gesloten.
- Toegang tot de View-eigenschap door de View-eigenschap op false of true te zetten.
- Visual Studio breidd het Bookmark-object uit door een Bookmark-hostbesturing te bieden. Bookmark host-besturingen gedragen zich vergelijkbaar met native Bookmark, maar ze hebben ook extra event- en databindingsmogelijkheden. Je kunt data binden aan een bladwijzer-controle op een document, net zoals je data bindt aan een tekstvak-controlepunt in een Windows-formulier.
Maak een Word VSTO-add-in aan
Na het begrijpen van de basisconcepten open VS 2022 om een nieuwe Word VSTO-add-in te maken, zoals weergegeven in de onderstaande figuur:
Maak een visueel lint zoals weergegeven in de volgende figuur:
Dubbelklik Ribbon1.cs om te openen, verwijder het standaard tabblad en sleep een nieuw tabblad naar binnen, zoals hieronder weergegeven:
Sleep een groeps- en een knopbediening naar het nieuwe tabblad, zoals hieronder weergegeven:
Dubbelklik op de nieuw aangemaakte knop om een klik-event te creëren met de volgende code:
(Einde)
|