如何将 Formregion 上的 TextBox 绑定到自定义 属性?
How to bind a TextBox on a Formregion to a custom property?
C#、VSTO、Outlook 2016
我创建了一个带有文本框的 Outlook Formregion。
我想将 TextBox 控件绑定到自定义 属性.
我找到了 SetControlItemProperty 方法:
https://docs.microsoft.com/en-us/office/vba/api/outlook.formregion.setcontrolitemproperty
c#中有没有类似的方法,如何使用这个方法
应该在哪里调用这个方法?
如果是托管加载项,您需要以编程方式设置 属性。对于 VSTO 加载项,没有自动绑定。
您可以在运行时使用任何标准的 Outlook 机制(例如 UserProperties
或 CustomProperties
读取 属性 值,并设置您的控件的 Text
属性以编程方式。
好的,谢谢尤金。
所以以下是不可能的:
using Outlook = Microsoft.Office.Interop.Outlook;
using MSForms = Microsoft.Vbe.Interop.Forms;
namespace myHumbleAddin
{
partial class frmDataTable
{
private void frmDataTable_FormRegionShowing(object s, EventArgs e) {
Outlook.FormRegion mRegion = this.OutlookFormRegion;
mRegion.SetControlItemProperty(mRegion.Form.mTextBox, "userField");
}
}
}
但是智能感知功能显示了 SetControlItemProperty 方法。
没有机会用这个吗?
Intellisense
Würg,谢谢尤金。
如果微'!%-&%"? ...
目前我的解决方案(仅针对约会):
using Outlook = Microsoft.Office.Interop.Outlook;
namespace myHumbleAddin
{
partial class frmDataTable
{
private void frmDataTable_FormRegionShowing(object sender, System.EventArgs e) {
Outlook.FormRegion currentRegion = this.OutlookFormRegion;
Outlook.AppointmentItem currentItem = OutlookItem as Outlook.AppointmentItem;
// Bind a control on the form to a UserPropertyField
void bindControl (System.Windows.Forms.Control control, string customProperty) {
string _value = currentItem.UserProperties[customProperty].Value.ToString();
if (!string.IsNullOrEmpty(_value)) {
control.Text = _value;
}
}
if ( (currentItem != null) && (currentItem is Outlook.AppointmentItem) ) {
bindControl(tbBez, "Bezeichnung");
}
}
private void frmDataTable_FormRegionClosed(object sender, System.EventArgs e) {
Outlook.AppointmentItem currentItem = OutlookItem as Outlook.AppointmentItem;
void setControlContents(System.Windows.Forms.Control control, string customProperty) {
string _value = currentItem.UserProperties[customProperty].Value.ToString();
if (control.Text.Length != 0 && control.Text != _value) {
currentItem.UserProperties[customProperty].Value = control.Text;
}
}
setControlContents(tbBez, "Bezeichnung");
}
}
}
感谢任何改进,因为我是这个 Outlook 世界的初学者。
C#、VSTO、Outlook 2016
我创建了一个带有文本框的 Outlook Formregion。
我想将 TextBox 控件绑定到自定义 属性.
我找到了 SetControlItemProperty 方法:
https://docs.microsoft.com/en-us/office/vba/api/outlook.formregion.setcontrolitemproperty
c#中有没有类似的方法,如何使用这个方法
应该在哪里调用这个方法?
如果是托管加载项,您需要以编程方式设置 属性。对于 VSTO 加载项,没有自动绑定。
您可以在运行时使用任何标准的 Outlook 机制(例如 UserProperties
或 CustomProperties
读取 属性 值,并设置您的控件的 Text
属性以编程方式。
好的,谢谢尤金。
所以以下是不可能的:
using Outlook = Microsoft.Office.Interop.Outlook;
using MSForms = Microsoft.Vbe.Interop.Forms;
namespace myHumbleAddin
{
partial class frmDataTable
{
private void frmDataTable_FormRegionShowing(object s, EventArgs e) {
Outlook.FormRegion mRegion = this.OutlookFormRegion;
mRegion.SetControlItemProperty(mRegion.Form.mTextBox, "userField");
}
}
}
但是智能感知功能显示了 SetControlItemProperty 方法。
没有机会用这个吗?
Intellisense
Würg,谢谢尤金。 如果微'!%-&%"? ...
目前我的解决方案(仅针对约会):
using Outlook = Microsoft.Office.Interop.Outlook;
namespace myHumbleAddin
{
partial class frmDataTable
{
private void frmDataTable_FormRegionShowing(object sender, System.EventArgs e) {
Outlook.FormRegion currentRegion = this.OutlookFormRegion;
Outlook.AppointmentItem currentItem = OutlookItem as Outlook.AppointmentItem;
// Bind a control on the form to a UserPropertyField
void bindControl (System.Windows.Forms.Control control, string customProperty) {
string _value = currentItem.UserProperties[customProperty].Value.ToString();
if (!string.IsNullOrEmpty(_value)) {
control.Text = _value;
}
}
if ( (currentItem != null) && (currentItem is Outlook.AppointmentItem) ) {
bindControl(tbBez, "Bezeichnung");
}
}
private void frmDataTable_FormRegionClosed(object sender, System.EventArgs e) {
Outlook.AppointmentItem currentItem = OutlookItem as Outlook.AppointmentItem;
void setControlContents(System.Windows.Forms.Control control, string customProperty) {
string _value = currentItem.UserProperties[customProperty].Value.ToString();
if (control.Text.Length != 0 && control.Text != _value) {
currentItem.UserProperties[customProperty].Value = control.Text;
}
}
setControlContents(tbBez, "Bezeichnung");
}
}
}
感谢任何改进,因为我是这个 Outlook 世界的初学者。