Word beenden

15/10/2009 - 22:02 von Stefan Simon | Report spam
Hallo,

ich habe ein vb.net Projekt, in dem ich Textmarken in einem Word-Dokument
fülle. Das Projekt habe ich nun nach C# übersetzt und bekomme bei
Word-Application.Quit eine Warnung. Der Code funktioniert zwar, aber mich
stört die Warnung. Im vb.net-Projekt habe ich keine Warnung.

\\\
Microsoft.Office.Interop.Word.Application app;
private void button1_Click(object sender, EventArgs e) {
object obj = null;
try {
obj = Marshal.GetActiveObject("Word.Application");
}
catch (Exception) {
}
if (obj != null) {
app = (Microsoft.Office.Interop.Word.Application)obj;
}
else {
app = new Microsoft.Office.Interop.Word.Application();
}
}

private void button2_Click(object sender, EventArgs e) {
if (app != null) {
object _null = null;
app.Application.Quit(ref _null, ref _null, ref _null); //
hier kommt die Warnung
}
}
///

Warning 1:
Ambiguity between method
'Microsoft.Office.Interop.Word._Application.Quit(ref object, ref object, ref
object)' and non-method
'Microsoft.Office.Interop.Word.ApplicationEvents4_Event.Quit'.

Was muss ich am Code àndern, damit der Compiler nicht warnt?

tia
Stefan
 

Lesen sie die antworten

#1 Arne Janning
15/10/2009 - 23:43 | Warnen spam
Hallo Stefan,

"Stefan Simon" wrote
app.Application.Quit(ref _null, ref _null, ref _null); //
hier kommt die Warnung



[]

Was muss ich am Code àndern, damit der Compiler nicht warnt?



Das Problem rührt daher, daß das Application-Objekt mehrere
COM-Schnittstellen implementiert: in einer Schnittstelle ist eine
Close-Methode definiert, in einer anderen Schnittstelle ein Close-Event.
Dasselbe Problem hast Du zum Beispiel auch in Excels Workbook-Objekt: da
gibt es eine Activate-Methode und ein Activate-Event.

Du kannst den Compiler zufriedenstellen, indem Du explizit auf die
Schnittstelle castest, die die Quit-Methode enthàlt, in Deinem Fall also
"_Application":

(app.Application as _Application).Quit(...)

Herzliche Grüße

Arne

Ähnliche fragen