如何:使用 Word 中的内置对话框
更新:2007 年 11 月
适用对象 |
---|
本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型
Microsoft Office 版本
有关更多信息,请参见按应用程序和项目类型提供的功能。 |
使用 Microsoft Office Word 时,有时需要显示用户输入对话框。虽然可以创建自己的对话框,您也许还希望采用使用 Word 中内置对话框的方法,这些对话框在 Application 对象的 Dialogs 集合中公开。这使您能够访问 200 个以上的内置对话框,它们以枚举的形式表示。
使用内置对话框
使用 WdWordDialog 枚举的某个值来创建 Dialog 对象,该对象表示要显示的 Word 对话框。若要使用以下代码示例,请从项目内的 ThisDocument 或 ThisAddIn 类中运行它。
Dim dlg As Word.Dialog = Application.Dialogs.Item(Word.WdWordDialog.wdDialogFileNew)
Word.Dialog dlg = Application.Dialogs[Word.WdWordDialog.wdDialogFileNew];
创建 Dialog 变量之后即可调用其方法。
dlg.Show()
object timeOut = 0; dlg.Show(ref timeOut);
访问对话框成员
获取对话框类型,并将 Name 属性设置为 Testing。若要使用以下代码示例,请从项目内的 ThisDocument 或 ThisAddIn 类中运行它。
说明: 与 Word 内置对话框的交互是通过后期绑定进行的,所以如果您已将 Option Strict 设置为 On 或者使用 C#,将不能直接访问对话框的成员。您必须使用 Reflection 库访问对话框成员。
Dim dlg As Word.Dialog = Application.Dialogs(Word.WdWordDialog.wdDialogFileOpen) Dim dlgType As Type = GetType(Word.Dialog) ' Set the Name property of the dialog box. dlgType.InvokeMember("Name", _ Reflection.BindingFlags.SetProperty Or _ Reflection.BindingFlags.Public Or _ Reflection.BindingFlags.Instance, _ Nothing, dlg, New Object() {"Testing"}, _ System.Globalization.CultureInfo.InvariantCulture)
Word.Dialog dlg = Application.Dialogs[Word.WdWordDialog.wdDialogFileOpen]; System.Type dlgType = typeof(Word.Dialog); // Set the Name property of the dialog box. dlgType.InvokeMember("Name", System.Reflection.BindingFlags.SetProperty | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance, null, dlg, new object[] {"Testing"}, System.Globalization.CultureInfo.InvariantCulture);
显示对话框,然后在一个消息框中显示 Name 属性。
' Display the dialog box. dlg.Show() ' Show the Name property. MessageBox.Show(dlgType.InvokeMember("Name", _ Reflection.BindingFlags.GetProperty Or _ Reflection.BindingFlags.Public Or _ Reflection.BindingFlags.Instance, _ Nothing, dlg, Nothing, _ System.Globalization.CultureInfo.InvariantCulture))
// Display the dialog box. dlg.Show(ref missing); // Show the Name property. MessageBox.Show(dlgType.InvokeMember("Name", System.Reflection.BindingFlags.GetProperty | System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance, null, dlg, null, System.Globalization.CultureInfo.InvariantCulture).ToString());