我正在开发一个VSTO项目,并希望在隐藏模式中使用 Word对话框,就像下面的代码一样:
dynamic dialog = Application.Dialogs[Word.WdWordDialog.wdDialogFilePageSetup];
dialog.PageWidth = "3.3\"";
dialog.PageHeight = "6\"";
dialog.TopMargin = "0.71\"";
dialog.BottomMargin = "0.81\"";
dialog.LeftMargin = "0.66\"";
dialog.RightMargin = "0.66\"";
dialog.HeaderDistance = "0.28\"";
dialog.Orientation = "0";
dialog.DifferentFirstPage = "0";
dialog.FirstPage = "0";
dialog.OtherPages = "0";
// Apply these settings only to the current selection with this line of code:
dialog.ApplyPropsTo = "3";
// Apply the settings.
dialog.Execute();
我想实现另一个diaglog wdDialogEditFind
,但方法和属性未知。然后使用反射来检索它们(后期绑定)。但没有找到有用的方法。
Word.Dialog dlg = this.Application.Dialogs[Word.WdWordDialog.wdDialogEditFind];
System.Type t = dlg.Type.GetType();
System.Reflection.MemberInfo[] memInfo = t.GetMembers();
string str = "";
foreach (System.Reflection.MemberInfo m in memInfo)
str += m.Name + "\n";
答案 0 :(得分:1)
MS Word互操作会隐藏这些成员,因为它依赖于 COM RCW 。反射不能用于迭代属性,因为它们没有为Dialog
基类型定义。如果您想知道哪些属性可用 - 请参阅this MSDN reference了解wdDialogEditFind
的内置对话框参数。
wdDialogEditFind
(from MSDN)查找,替换,方向,MatchCase,WholeWord,PatternMatch,SoundsLike,FindNext,ReplaceOne,ReplaceAll,Format,Wrap,FindAllWordForms,MatchByte,FuzzyFind,Destination,CorrectEnd,MatchKashida,MatchDiacritics,MatchAlefHamza,MatchControl
如果您坚持了解COM方法和属性 - 您可以深入研究IDispatch
和weed your way through the COM types。