Outlook 2007 加载项:在我的表单区域 (WinForm) 重用内置的“收件人...”控件
Posted
技术标签:
【中文标题】Outlook 2007 加载项:在我的表单区域 (WinForm) 重用内置的“收件人...”控件【英文标题】:Outlook 2007 Add-In : Reuse built-in 'To...' control at my Form Region (WinForm) 【发布时间】:2010-11-02 12:34:33 【问题描述】:是否可以在我的 WinForm(窗体区域)中添加 'To...' 'Outlook.OlkTextBox' OlkTextBox 控件,这样它就可以像 Outlook 内置一样工作(我不不想创建我自己的 Outlook 地址电子邮件输入副本)?
如果是,您可以发布代码示例吗?
谢谢!
附: Microsoft Office Outlook 文本框控件 等于 Outlook.OlkTextBox。 我尝试使用设计模式(添加了 COM 组件的 Visual Studio 工具箱),但在 win 表单中移动它时出现奇怪的错误:
*Microsoft Visual Studio 未能创建组件“AxHost”。错误信息如下: 'System.Runtime.InteropServices.COMException (0x80040154): 类未注册(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG)) 在 System.Windows.Forms.Design.DocumentDesigner.AxToolboxItem.CreateComponentsCore(IDesignerHost 主机) 在 System.Drawing.Design.ToolboxItem.CreateComponentsCore(IDesignerHost 主机,IDictionary defaultValues) 在 System.Drawing.Design.ToolboxItem.CreateComponents(IDesignerHost 主机,IDictionary defaultValues) 在 System.Windows.Forms.Design.OleDragDropHandler.CreateTool(ToolboxItem 工具, 控件父级, Int32 x, Int32 y, Int32 宽度, Int32 高度, Boolean hasLocation, Boolean hasSize, ToolboxSnapDragDropEventArgs e)'*
【问题讨论】:
【参考方案1】:我想这是不可能的,因为“To...”控件是基于 COM 的,旨在与 COM 表单区域(内部 Outlook 表单区域)一起使用(不是 WINFORM!)
仅适用于 Outlook 内部表单区域:
Microsoft.Office.Interop.Outlook.OlkTextBox dynamicTextBox = new Microsoft.Office.Interop.Outlook.OlkTextBox(); 动态表单 = this.OutlookFormRegion.Form; form.Controls.Add("Outlook.OlkTextBox", dynamicTextBox, true); dynamicTextBox.Text = "你好世界!";
【讨论】:
结果:我决定使用 RichTextBox 和按钮实现我自己的“To...”用户控件(单击时显示标准 Outlook 对话框)。主要思想:1)将收件人更改事件附加到逻辑和2)在收件人字符(开始/结束)和真实收件人索引和集合之间创建映射。然后跟踪所有删除、选择和儿子以模拟所有操作。最复杂的是添加(带有弹出窗口),所以我暂时跳过了这个子任务。以上是关于Outlook 2007 加载项:在我的表单区域 (WinForm) 重用内置的“收件人...”控件的主要内容,如果未能解决你的问题,请参考以下文章