了解 Office 解决方案中的可选参数
更新:2007 年 11 月
Microsoft Office 应用程序的对象模型中的许多方法都接受可选参数。只有在使用 Visual Basic 调用方法时,才能以可选方式使用这些参数。当使用 C# 对 Microsoft Office 应用程序进行编程时,必须为所有参数传递值。
Visual Basic 和 Visual C# 中可选参数的差异
如果使用 Visual Basic 对 Microsoft Office 应用程序进行编程,您不必为可选参数传递值,因为每个缺少参数值的参数会自动使用默认值。但是,C# 中不支持可选参数,因此必须为每个参数的方法传递值。
Visual Studio Tools for Office 项目包括一个名为 missing 的全局变量,该变量在生成的代码中被赋以值 Type.Missing。可传递此全局变量作为接受引用类型(比如 Object)的每个可选参数的默认值。对于接受值类型的可选参数,必须传递实际的默认值。有关更多信息,请参见在 Visual C# 中将值类型传递给可选参数。
Excel 中的示例
Worksheet.CheckSpelling 方法采用接受引用类型的以下可选参数:
CustomDictionary:指示当在主字典中未找到某个字时是否使用自定义字典。
IgnoreUppercase:指示是否忽略大写字母。
AlwaysSuggest:指示当发现不正确的拼写时是否让 Excel 显示建议的替换拼写列表。
SpellLang:指示所使用的字典的语言。
可以接受这些参数的默认值,如以下代码示例中所示。
Globals.Sheet1.CheckSpelling()
Globals.Sheet1.CheckSpelling(missing, missing, missing, missing);
Word 中的示例
一般说来,从 C# 中调用 Microsoft Office Word 方法比调用其他 Office 应用程序的方法更为复杂,原因是您必须按引用传递所有可选参数。
例如,Document.CheckSpelling 方法采用以下可选参数来对 Word 文档进行拼写检查:
CustomDictionary:自定义字典的文件名。
IgnoreUppercase:指示是否忽略大写字母。
AlwaysSuggest:指示当发现不正确的拼写时是否让 Word 显示建议的替换拼写列表。
CustomDictionary2 – CustomDictionary10:附加自定义字典的文件名。最多可指定 9 部附加字典。
可以接受这些参数的默认值,如以下代码示例中所示。
Me.CheckSpelling()
this.CheckSpelling(
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
在 Visual C# 中将值类型传递给可选参数
在 Visual C# 中,只能为接受引用类型的可选参数传递全局 missing 变量。对于接受值类型的可选参数,则必须确定实际的默认值,并改为传递该默认值。
例如,NamedRange 类的 Sort 方法可接受大量的枚举值作为参数,比如 Microsoft.Office.Interop.Excel.XlSortOrder。因为这是值类型,所以必须指定 XlSortOrder 值中的一个,而不是传递全局 missing 变量。
有关值类型和引用类型参数的更多信息,请参见通过值和通过引用传递参数(适用于 Visual Basic)和传递参数(C# 编程指南)。