C# - Aktív dokumentum változásának figyelése Word-ben

forráskód letöltése
A .NET-ben írt alkalmazásokból minden eddiginél hatékonyabban és könnyebben lehet elérni a Microsoft Office alkalmazás-csomag programjait. A kapcsolatteremtés után könnyedén hozhatunk létre új objektumokat, nyithatunk meg meglévőket, vagy figyelhetünk eseményeket. Cikkünkben ez utóbbira mutatunk egy példát. A példában megvizsgáljuk, hogyan „szerezhet tudomást” alkalmazásunk arról, ha a Word alkalmazásban egy új dokumentum töltődik be.
A mellékelt példát úgy készítettük el, hogy az alkalmazás ablaka mindig legfelül legyen a többi ablak fölött (TopMost property értéke TRUE), így mindig látható lesz a felület egy címkéjén a Word alkalmazásban aktuálisan betöltődött dokumentum neve. Amennyiben a dokumentumnak még nem adtunk egyéb nevet, akkor a Word alkalmazás által a dokumentumnak adott név jelenik meg. Lássuk, mit kell tennünk a megoldás érdekében.
Az első lépés, hogy létrehozunk egy példányt a Word alkalmazásból, majd láthatóvá is tesszük, hogy a változásokat mi is követhessük.
wa = new Word.ApplicationClass();
wa.Visible = true;
A mellékelt példa mappájában elhelyeztünk egy Sample1.doc nevű dokumentumot, melyet megnyitunk a program indulásakor. Ehhez a fájl nevét egy object típusú változóban helyezzük el, majd átadjuk az Open metódusnak.
object file = Application.StartupPath + "\\Sample1.doc";
wa.Documents.Open(ref file,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o,ref o);
A nem használt paraméterek értékét Missing.Value értékre állítjuk be. A megnyitás után létrehozunk egy új dokumentumot, mely szintén a megnyitott dokumentumok neveit tároló gyűjteménybe kerül, és megjeleni az Ablak feliratú menüpontban is.
wa.Documents.Add(ref o,ref o,ref o,ref o);
Ekkor tehát két dokumentum található az alkalmazás Documents nevű gyűjteményében, melyek között manuálisan váltogathatunk.
Ehhez a művelethez tartozik egy esemény, mely az alkalmazásban elkapható, és rá eseménykezelő metódus definiálható. Az esemény neve DocumentChange, és a kezelőmetódus Word.ApplicationEvents3_DocumentChangeEventHandler típusú.
A kezelő deklarációja a következő:
wa.DocumentChange += new Word.ApplicationEvents3_DocumentChangeEventHandler(Active_DocumentChange);
A kezelőmetódus típusa szerint nem kell paramétereket átadnunk a kezelőnek. A kezelőmetódusban megvizsgáljuk, hogy van-e megnyitott dokumentum. Amennyiben nincs, egy figyelmeztető üzenetet, amennyiben viszont van, az aktív dokumentum nevét jelenítjük meg a Form címkéjén.
if (wa.Documents.Count == 0)
{
  label2.Text = "Nincs megnyitott documentum...";
}
else
{
  label2.Text = "Aktív dokumentum neve: " + wa.ActiveDocument.Name;
}
Az alkalmazás bezárásakor a megnyitott Word alkalmazást is bezárjuk, annak Quit metódusával.