2010-07-24 9 views
14

Estoy utilizando la función de hoja de trabajo de Excel de Office 2007 en el código C#. cuestiones VS2010 esta advertencia¿Cómo puedo resolver la ambigüedad en esta llamada al método Microsoft.Office.Excel?

Advertencia 3 ambigüedad entre el método 'Microsoft.Office.Interop.Excel._Worksheet.Activate()' y no el método 'Microsoft.Office.Interop.Excel.DocEvents_Event.Activate '. Usando el método grupo. D: \ EXLANEDB01p \ dev \ libraries \ EXCEL \ Excel.cs 531 95 EXCEL

¿Cómo puedo resolver esto? la llamada es

xSheet.Activate(); 

donde xSheet pasa como referencia en la llamada como

ref Microsoft.Office.Interop.Excel.Worksheet xSheet 

Respuesta

28

Es necesario para eliminar la ambigüedad del nombre Activate. Dentro de la interfaz de la hoja de trabajo, Activate es un método (si se lo mira como un objeto _Worksheet) o un evento (si se lo mira como un objeto DocEvents_Event).

Primero envíe su objeto al Microsoft.Office.Interop.Excel._Worksheet y luego llame al Activate().

((Microsoft.Office.Interop.Excel._Worksheet)xSheet).Activate(); 

o declarar una nueva variable y utilizar _Worksheet que dentro de su método.

_Worksheet sheet = xSheet; 
sheet.Activate(); 

lo contrario, podría cambiar su declaración de método para tomar una referencia a un _Worksheet en lugar de un Worksheet, así como todas las declaraciones asociadas.

void MyMethod(ref Microsoft.Office.Interop.Excel._Worksheet xSheet) 
{ 
    // ... 
} 

// usage: 
_Worksheet sheet = new Worksheet(); 
MyMethod(ref sheet); 
+0

Gracias .. eso resolvió el waring..Tony – TonyP

+0

¿Alguna idea de por qué esto funciona? Sólo curioso. –

+5

@Protector: tenemos que eliminar la ambigüedad del nombre 'Activate'. Dentro de la interfaz 'Hoja de trabajo',' Activar' es un método (si se mira como un objeto '_Worksheet') o un evento (si se mira como un objeto' DocEvents_Event'). El compilador no estaba seguro de qué hacer al respecto, por lo que (el programador) tenía que decir qué hacer con él. En este caso, deberíamos verlo como una hoja de trabajo donde el nombre 'Activate' es un método. –

Cuestiones relacionadas