You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# VSTO开发Outlook 2016时如何将窗体区域TextBox绑定到自定义属性

问题解答

1. 方法存在性说明

C# VSTO的Outlook互操作库提供了和VBA完全对应的SetControlItemProperty方法,隶属于Microsoft.Office.Interop.Outlook.FormRegion接口,功能和VBA版本一致,用于将窗体区域的控件直接绑定到Outlook项目的属性(包含自定义属性)。

2. 方法调用位置

必须在窗体区域的 FormRegionShowing 事件中调用,该事件触发时窗体区域的控件已完成初始化、且关联的Outlook项目对象已挂载,不会出现无效调用异常。禁止在窗体区域构造函数、FormRegionInitializing事件中调用,这两个阶段控件或Outlook项目还未完成初始化,会触发异常。

3. 具体使用示例

方法签名:void SetControlItemProperty(object Control, string PropertyName)

  • 第一个参数:要绑定的控件实例,也就是你在窗体设计器中添加的TextBox控件对象
  • 第二个参数:要绑定的属性名称,如果是用UserProperties创建的自定义属性直接传属性名即可,如果是MAPI命名空间属性则传完整的属性标识字符串
using Outlook = Microsoft.Office.Interop.Outlook;

// 窗体区域的FormRegionShowing事件处理方法
private void YourFormRegion_FormRegionShowing(object sender, EventArgs e)
{
    // 先获取当前窗体关联的Outlook项目,这里以邮件项目为例,约会、任务等类型同理转换
    Outlook.MailItem currentItem = this.OutlookItem as Outlook.MailItem;
    if (currentItem == null) return;

    // 自定义属性名称
    const string CustomPropName = "MyCustomTextField";
    
    // 可选:如果属性不存在则先创建,避免绑定失败
    Outlook.UserProperty customProp = currentItem.UserProperties.Find(CustomPropName);
    if (customProp == null)
    {
        // 第三个参数设为true表示将属性同步到文件夹视图中,可根据需求调整
        customProp = currentItem.UserProperties.Add(CustomPropName, Outlook.OlUserPropertyType.olText, true);
    }

    // 绑定TextBox控件到自定义属性
    this.SetControlItemProperty(this.yourTextBoxControl, CustomPropName);
}

4. 额外说明

  • 绑定完成后无需手动处理值同步:Outlook会自动将控件的输入内容同步到绑定的自定义属性,加载项目时也会自动将属性值回显到控件中
  • 如果需要解除绑定,调用同接口下的ClearControlItemProperty(Control, PropertyName)方法即可

内容的提问来源于stack exchange,提问作者habalulu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:06:01