C#Outlook加载项2010无法读取UserDefinedProperty
我已定义了四个自定义用户属性,无法访问以获取其数据,outlook约会中存在自定义属性,但我可以访问它们: 我的c#代码如下: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.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);
}