Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Outlook加载项2010无法读取UserDefinedProperty_C#_Vsto_Outlook 2007 - Fatal编程技术网

C#Outlook加载项2010无法读取UserDefinedProperty

C#Outlook加载项2010无法读取UserDefinedProperty,c#,vsto,outlook-2007,C#,Vsto,Outlook 2007,我已定义了四个自定义用户属性,无法访问以获取其数据,outlook约会中存在自定义属性,但我可以访问它们: 我的c#代码如下: Outlook.ItemProperties itemProp = appointmentItem.ItemProperties; foreach (Outlook.ItemProperty userprop in itemProp) { if (userprop.IsUserProperty)

我已定义了四个自定义用户属性,无法访问以获取其数据,outlook约会中存在自定义属性,但我可以访问它们:

我的c#代码如下:

        Outlook.ItemProperties itemProp = appointmentItem.ItemProperties;
        foreach (Outlook.ItemProperty userprop in itemProp)
        {
            if (userprop.IsUserProperty)
            {
                MessageBox.Show(userprop.Name + "\t" + userprop.Value);
            }
        }
我使用了一个api()在Outlook(2007我的版本)中创建约会事件,在下面的代码中,我创建了一些CustomProperties,在C#Addin Outlook UserProperty中调用。 我仍然可以从java端获得自定义用户属性的值

    PropertyName myRdvTypePropertyName = new PropertyName("RdvType", StandardPropertySet.PUBLIC_STRINGS);
    ExtendedProperty myRdvTypeExtendedProperty = new ExtendedProperty(myRdvTypePropertyName, event.getTyperdv());
    appointment.getExtendedProperties().add(myRdvTypeExtendedProperty);

    PropertyName myRdvEmplacementPropertyName = new PropertyName("RdvEmplacement", StandardPropertySet.PUBLIC_STRINGS);
    ExtendedProperty myRdvEmplacementExtendedProperty = new ExtendedProperty(myRdvEmplacementPropertyName, event.getLieu());
    appointment.getExtendedProperties().add(myRdvEmplacementExtendedProperty);

    PropertyName myRdvAdressePropertyName = new PropertyName("RdvAdresse", StandardPropertySet.PUBLIC_STRINGS);
    ExtendedProperty myRdvAdresseExtendedProperty = new ExtendedProperty(myRdvAdressePropertyName, event.getEvent_location());
    appointment.getExtendedProperties().add(myRdvAdresseExtendedProperty);
为了确保创建自定义用户属性,我使用 屏幕截图如下:

FormRegion中的以下代码显示:

            if (appointmentItem.UserProperties["RdvType"] != null)
        {
            this.TypeRdvComboBox.SelectedItem = appointmentItem.UserProperties["RdvType"].Value;
        }
        if (appointmentItem.UserProperties["RdvEmplacement"] != null)
        {
            this.emplacementRdvComboBox.SelectedItem = appointmentItem.UserProperties["RdvEmplacement"].Value;
        }
        if (appointmentItem.UserProperties["RdvAdresse"] != null)
        {
            this.adresseTextBox.Text = (string)appointmentItem.UserProperties["RdvAdresse"].Value;
        }
尝试改用属性和类。以下是MSDN的声明:

如果使用UserProperties.Find查找自定义属性,并且调用成功,它将返回UserProperty对象。如果失败,它将返回Null。如果使用UserProperties.Find查找内置属性,请为自定义参数指定False。如果调用成功,它将以UserProperty对象的形式返回属性。如果调用失败,它将返回Null。如果为Custom指定True,则调用将找不到内置属性,并返回Null

使用System.Runtime.InteropServices;
// ... 
私有void ShowUserProperties(Outlook.MailItem邮件)
{
Outlook.UserProperties mailUserProperties=null;
Outlook.UserProperty mailUserProperty=null;
StringBuilder=新的StringBuilder();
mailUserProperties=mail.UserProperties;
尝试
{ 
对于(int i=1;i<=mailUserProperties.Count;i++)
{ 
mailUserProperty=mailUserProperties[i];
if(mailUserProperty!=null)
{ 
AppendFormat(“名称:{0}\t值:{1}\n\r”,
mailUserProperty.Name,mailUserProperty.Value);
Marshal.ReleaseComObject(mailUserProperty);
mailUserProperty=null;
} 
} 
如果(builder.Length>0)
{ 
System.Windows.Forms.MessageBox.Show(builder.ToString(),
“用户属性集合”);
} 
} 
捕获(例外情况除外)
{ 
System.Windows.Forms.MessageBox.Show(例如Message);
} 
最后
{ 
if(mailUserProperties!=null)
Marshal.ReleaseComObject(mailUserProperties);
} 
}

在文章中阅读更多关于这方面的内容

谢谢你的灵感,这很有效:

Outlook.MailItem mItem = (Outlook.MailItem)item;
string udpName = "";
string udpValueString = "";
Debug.Print(" mItem.UserProperties.Count: " + mItem.UserProperties.Count);
for (int i = 1; i <= mItem.UserProperties.Count; i++) {
    udpName = mItem.UserProperties[i].Name;
    var udpValue = mItem.UserProperties[i].Value;
    udpValueString = udpValue.ToString();
    Debug.Print(i + ": " + udpName + ": " + udpValueString);
}
Outlook.MailItem=(Outlook.MailItem)项;
字符串udpName=“”;
字符串udpValueString=“”;
打印(“mItem.UserProperties.Count:+mItem.UserProperties.Count”);

对于(int i=1;感谢您的回复,我首先使用UserProperties来查找我的自定义用户属性,但我无法获取它们。我已创建了一个formRegion,其中应显示用户属性的值…可能是我缺少了一些重要的内容。您使用了哪些代码来获取属性值?
Outlook.MailItem mItem = (Outlook.MailItem)item;
string udpName = "";
string udpValueString = "";
Debug.Print(" mItem.UserProperties.Count: " + mItem.UserProperties.Count);
for (int i = 1; i <= mItem.UserProperties.Count; i++) {
    udpName = mItem.UserProperties[i].Name;
    var udpValue = mItem.UserProperties[i].Value;
    udpValueString = udpValue.ToString();
    Debug.Print(i + ": " + udpName + ": " + udpValueString);
}