Záväzné pre Office automatizačné servery s Visual C#.NET

Preklady článku Preklady článku
ID článku: 302902 - Zobraziť produkty, ktorých sa tento článok týka.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Keď ste automatizovať aplikácii ako napríklad Microsoft Office žiadosti, hovory na vlastnosti a metódy úradu objekty aplikácie musia byť pripojené nejakým spôsobom týchto objektov. V Proces pripojenia nehnuteľností a metóda hovory na objekty, ktoré implementujú tieto vlastnosti a metódy sa bežne nazýva záväzné. V Visual C#, sú dva typy záväzné, ktoré sú k dispozícii včasnú väzbu a neskoré záväzné. Typ väzby vyberiete môže ovplyvniť mnohé aspekty vašej programu, vrátane výkon, flexibilitu a schopnosť údržby.

Tento článok vysvetľuje a porovnáva začiatkom a koncom záväzné pre Visual C# Automatizácia klientov a ponúka ukážky kódu, ktoré preukazujú oba typy záväzné.

Včasnú väzbu

S včasnú väzbu, Visual C# používa typ informácie, ktorá je o príslušnej žiadosti úradu zaväzovala priamo do metódy alebo vlastnosti, je potrebné použiť. Kompilátor môžete vykonať typu a syntax kontroly s cieľom zabezpečiť, že sa správne číslo a typ parametre postúpené metóda alebo vlastnosť a že vrátená hodnota bude očakávaná typ. Pretože menej práce je potrebné v čase spustenia volaní na vlastnosť alebo metóda, včasnú väzbu je niekedy rýchlejšie; Avšak, hoci skoré záväzný mája byť rýchlejšie, výkon rozdiely v porovnaní s koncom záväzné sú často zanedbateľné.

Skoré záväzné nemá maloletého znevýhodniť že môžu zaviesť možné verzia problémy s kompatibilitou. Predpokladajme napríklad, že Automatizačný server, ako program Microsoft Excel 2002 zavádza novú metódu alebo nehnuteľnosť, ktorá bola k dispozícii v programe Excel 2000 alebo vykoná zmenu do existujúceho Vlastnosť alebo metódu. Tieto zmeny môžu meniť binárne rozloženie objektu a spôsobiť problémy s Visual C# aplikácie, ktorá používa typ Excel 2002 informácie na automatizáciu Excel 2000. Aby sa zabránilo tento problém s včasnú väzbu, vo všeobecnosti sa odporúča, že použijete typ informácie pre najskorší verzia aplikácia balíka Office, ktoré máte záujem na podporu pri rozvíjaní a Otestujte vaše automatizačných klientov.

Nasledovné kroky popisujú ako vybudovať automatizačných klientov, ktorý používa včasnú väzbu. Všimnite si, že, ako kroky ilustráciu, včasného záväzné vyžaduje referenčné knižnice typov pre Automatizačných klientov.

Vytvoriť automatizačných klientov, ktorý používa včasnú väzbu

  1. Spustiť Microsoft Visual Studio.NET. Na Súbor ponuky, kliknite na tlačidlo Nové a potom kliknite na tlačidlo Project. Vyberte Windows aplikácie z typov Visual C# projekty. Vytvára sa Form1 predvolené.
  2. Pridať odkaz na Objektová knižnica programu Microsoft Excel. Použite tento postup:
    1. Na Project ponuky, kliknite na tlačidlo Pridať odkaz.
    2. Na COM kartu, vyhľadajteProgramu Microsoft Excel Objektová knižnica a kliknite na tlačidlo Vyberte.

      Poznámka: Office 2003 obsahuje Primary Interop Assemblies (PIA). Office XP nezahŕňa Pia, ale môžu byť stiahnuté. Ďalšie informácie o Office XP Pia, kliknite na tlačidlo nasledujúce číslo článku databázy Microsoft Knowledge Base:
      328912Microsoft Office XP primary objektovému assemblies (PIA) sú k dispozícii na prevzatie
    3. Kliknite na položku ok v Pridať odkazy dialógové okno prijímať vaše výbery. Ak sa zobrazí výzva na generovať medzivrstva pre knižnice, ktorý ste vybrali, kliknite na tlačidlo Yes.
  3. Na View menu vyberte Toolbox zobrazenie panela s nástrojmi a pridať tlačidlo, na Form1.
  4. Dvakrát kliknite na Button1. Zobrazí sa okno kód pre formulár.
  5. V okne kód nahradiť nasledujúci kód
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    					
    s:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	Excel.Application objApp;
    	Excel._Workbook objBook;
    	Excel.Workbooks objBooks;
    	Excel.Sheets objSheets;
    	Excel._Worksheet objSheet;
    	Excel.Range range;
    
    	try
    	{
    		// Instantiate Excel and start a new workbook.
    		objApp = new Excel.Application();
    		objBooks = objApp.Workbooks;
    		objBook = objBooks.Add( Missing.Value );
    		objSheets = objBook.Worksheets;
    		objSheet = (Excel._Worksheet)objSheets.get_Item(1);
    
    		range = objSheet.get_Range("A1", Missing.Value);
    
    		range.set_Value(Missing.Value, "Hello, World!" );
    
    		//Return control of Excel to the user.
    		objApp.Visible = true;
    		objApp.UserControl = true;
    	}
    	catch( Exception theException ) 
    	{
    		String errorMessage;
    		errorMessage = "Error: ";
    		errorMessage = String.Concat( errorMessage, theException.Message );
    		errorMessage = String.Concat( errorMessage, " Line: " );
    		errorMessage = String.Concat( errorMessage, theException.Source );
    
    		MessageBox.Show( errorMessage, "Error" );
    	}
    }  
    					
  6. Prejdite na hornej časti okna pre kód. Doplní sa nasledujúce riadok na koniec zoznamu pomocou smerníc:
    using System.Reflection;
    using Excel = Microsoft.Office.Interop.Excel;
    					

Neskoré záväzné

Na rozdiel od včasnú väzbu, oneskorenú väzbu počká čase spustenia naviazať majetku a spôsob volania do ich objektov. Ak chcete cieľ objekt musí zaviesť osobitné rozhrania COM: IDispatch. V IDispatch::GetIDsOfNames metóda umožňuje Visual C# na interrogate objekt o tom, čo metódy a vlastnosti podporuje a IDispatch::Invoke metóda potom umožňuje Visual C# volať tieto metódy a vlastnosti. Neskoré záväzné týmto spôsobom má výhodu odstránením niektorých verzia závislostí, ktoré sú spojené s včasnú väzbu. Je však nevýhody odstránenie kompilácie kontroly integrity Automatizácia kód, ako aj nie poskytovanie Intellisense funkcií, ktoré môžete poskytnúť vodítka opraviť volania metódy a vlastnosti.

Použitie neskoro záväzné v Visual C#, použite System.type.InvokeMember metóda. Táto metóda vyžaduje IDispatch::GetIDsOfNames a IDispatch::Invoke naviazať na automatizačný server metódy a vlastnosti.

Vytvoriť automatizačných klientov, ktorý používa neskoro záväzné

  1. Spustiť Microsoft Visual Studio.NET. Na Súbor ponuky, kliknite na tlačidlo Nové a potom kliknite na tlačidlo Projekt. Vyberte Windows aplikácie z typov Visual C# projekty. Vytvára sa Form1 predvolené.
  2. Na Zobrazenie menu vyberte Toolbox zobrazenie panela s nástrojmi a pridať tlačidlo, na Form1.
  3. Dvakrát kliknite na Button1. Zobrazí sa okno kód pre formulár.
  4. V okne kód nahradiť nasledujúci kód
    private void button1_Click(object sender, System.EventArgs e)
    {
    }
    						
    s:
    private void button1_Click(object sender, System.EventArgs e)
    {
    	object objApp_Late;
    	object objBook_Late;
    	object objBooks_Late;
    	object objSheets_Late;
    	object objSheet_Late;
    	object objRange_Late;
    	object[] Parameters;
    
    	try
    	{
    		// Get the class type and instantiate Excel.
    		Type objClassType; 
    		objClassType = Type.GetTypeFromProgID("Excel.Application"); 
    		objApp_Late = Activator.CreateInstance(objClassType);
    
    		//Get the workbooks collection.
    		objBooks_Late = objApp_Late.GetType().InvokeMember( "Workbooks", 
    		BindingFlags.GetProperty, null, objApp_Late, null );
    
    		//Add a new workbook.
    		objBook_Late = objBooks_Late.GetType().InvokeMember( "Add", 
    			BindingFlags.InvokeMethod, null, objBooks_Late, null );
    
    		//Get the worksheets collection.
    		objSheets_Late = objBook_Late.GetType().InvokeMember( "Worksheets",
    			BindingFlags.GetProperty, null, objBook_Late, null );
    
    		//Get the first worksheet.
    		Parameters = new Object[1];
    		Parameters[0] = 1;
    		objSheet_Late = objSheets_Late.GetType().InvokeMember( "Item", 
    			BindingFlags.GetProperty, null, objSheets_Late, Parameters );
    
    		//Get a range object that contains cell A1.
    		Parameters = new Object[2];
    		Parameters[0] = "A1";
    		Parameters[1] = Missing.Value;
    		objRange_Late = objSheet_Late.GetType().InvokeMember( "Range",
    			BindingFlags.GetProperty, null, objSheet_Late, Parameters );
    
    		//Write "Hello, World!" in cell A1.
    		Parameters = new Object[1];
    		Parameters[0] = "Hello, World!";
    		objRange_Late.GetType().InvokeMember( "Value", BindingFlags.SetProperty, 
    			null, objRange_Late, Parameters );
    
    		//Return control of Excel to the user.
    		Parameters = new Object[1];
    		Parameters[0] = true;
    		objApp_Late.GetType().InvokeMember( "Visible", BindingFlags.SetProperty,
    			null, objApp_Late, Parameters );
    		objApp_Late.GetType().InvokeMember( "UserControl", BindingFlags.SetProperty,
    			null, objApp_Late, Parameters );
    	}
    	catch( Exception theException ) 
    	{
    		String errorMessage;
    		errorMessage = "Error: ";
    		errorMessage = String.Concat( errorMessage, theException.Message );
    		errorMessage = String.Concat( errorMessage, " Line: " );
    		errorMessage = String.Concat( errorMessage, theException.Source );
    
    		MessageBox.Show( errorMessage, "Error" );
    	}
    }
    					
  5. Prejdite na hornej časti okna pre kód. Doplní sa nasledujúce riadok na koniec zoznamu pomocou smerníc:
    using System.Reflection; 
    					

ODKAZY

Pre viac informácií navštívte nasledujúce Microsoft Webová lokalita Developer Network (MSDN):
Microsoft Office rozvoja s Visual Studio
http://msdn2.Microsoft.com/en-us/library/aa188489 (office.10) .aspx
Pre Ďalšie informácie o záväzné, kliknite na nasledujúce čísla článkov články databázy Microsoft Knowledge Base:
245115Pomocou včasnú väzbu a neskoré záväzné v automatizácie
244167 Písanie automatizácie klientov pre viaceré verzie balíka Office
247579 Na automatizáciu aplikácie balíka Office, kedykoľvek je to možné použiť DISPID väzba

Vlastnosti

ID článku: 302902 - Posledná kontrola: 31. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft Word 2002 Standard Edition
Kľúčové slová: 
kbpia kbautomation kbhowtomaster kbmt KB302902 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:302902

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com