Office Fluent Ribbon 回调函数获取控件的当前状态..?
Office Fluent Ribbon callback function to get the current state of a control..?
我在 Visual Studio 中使用 VB .Net 为 Excel 创建了我的第一个 VSTO 插件。通常,我很难理解功能区回调。我已经让他们工作了,但我有一个问题找不到答案:
是否有功能区回调函数可以直接获取控件的状态..?
例如,要将功能区与 类 进行比较,大多数 "clickable" 控件在被单击时会触发 onAction
回调,这些可以被视为事件。复选框和切换按钮等多状态控件有 getPressed
回调来设置它们的当前状态,这些可以被认为是 属性 Set 方法。同样,基于文本的控件具有 getText
回调。
但是是否有任何与 属性 Get 方法等同的方法..?根据回调的倒置性质,这些回调似乎很可能是以 set
开头的回调,例如 setPressed
或 setText
...但我还没有找到任何回调。
它们不存在吗,因为 get
实际上是 set
,反之亦然..?
没有回调来获取这些属性的值 - 因为您是设置各种值的人,所以您应该是在内部存储这些值的人,从而为功能区和您的代码公开它们.
VSTO Ribbon Designer "wraps" up Ribbon XML 以便开发人员可以像使用 Windows 一样使用 basic 控件] 表单控件。这意味着可以在 run-time 读取和写入属性(XML 中的属性),而不是通过回调。此外,功能区控件 objects 公开 事件 而不是开发人员需要编写事件回调代码。
(请注意,对于更复杂的内容,有必要使用功能区 XML。设计器实际上仅适用于从工具箱添加的基本控件。)
文档是 here。下面是一个小例子来演示。
例如,DropDown
控件已添加到名为 DropDown1
的功能区组中。它可以在代码文件 Ribbon1.Designer.cs
中找到,它被声明为
internal Microsoft.Office.Tools.Ribbon.RibbonDropDown dropDown1;
并通过
实施
// dropDown1
//
ribbonDropDownItem1.Label = "Item0";
ribbonDropDownItem2.Label = "Item1";
ribbonDropDownItem3.Label = "Item2";
ribbonDropDownItem4.Label = "Item3";
this.dropDown1.Items.Add(ribbonDropDownItem1);
this.dropDown1.Items.Add(ribbonDropDownItem2);
this.dropDown1.Items.Add(ribbonDropDownItem3);
this.dropDown1.Items.Add(ribbonDropDownItem4);
this.dropDown1.Label = "dropDown1";
this.dropDown1.Name = "dropDown1";
this.dropDown1.SelectionChanged += new System.EventHandler<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>(this.dropDown1_SelectionChanged);
请注意,此文件中的信息由 "Tools" 生成,开发人员不得对其进行编辑。可以,但不能保证 "Tools" 不会做出否定任何编辑的更改。但从中可以看出加载 Ribbon 时执行了什么(属性设置和加载列表)以及事件的创建(这将是 Ribbon XML 中的回调)。显示的所有属性和设置都是使用设计器中提供的 Properties
window 生成的,与 Windows 表单控件相同。
然后在项目中的一个Ribbon组(任何选项卡,任何组)中添加了一个按钮。 Double-click 使用默认的 Click
处理程序打开 Ribbon1.cs
中的代码页,并添加了代码存根。大括号之间的代码是开发者敲的
请注意此代码如何使用 属性 ,这些属性被读取 (this.dropDown1.SelectedItem.Label
) 并被设置 (ddItem.Label
)。该代码显示一条消息,其中包含当前所选项目的标题,创建一个新项目,设置标题和屏幕提示,将其添加到下拉列表中,然后选择该项目。
private void btnSetGetDD1_Click(object sender, RibbonControlEventArgs e)
{
MessageBox.Show(this.dropDown1.SelectedItem.Label);
RibbonDropDownItem ddItem = new RibbonDropDownItem();
ddItem.Label = "new item three added";
ddItem.ScreenTip = "next test";
this.dropDown1.Items.Add(ddItem);
this.dropDown1.SelectedItemIndex = this.dropDown1.Items.Count - 1;
}
我在 Visual Studio 中使用 VB .Net 为 Excel 创建了我的第一个 VSTO 插件。通常,我很难理解功能区回调。我已经让他们工作了,但我有一个问题找不到答案:
是否有功能区回调函数可以直接获取控件的状态..?
例如,要将功能区与 类 进行比较,大多数 "clickable" 控件在被单击时会触发 onAction
回调,这些可以被视为事件。复选框和切换按钮等多状态控件有 getPressed
回调来设置它们的当前状态,这些可以被认为是 属性 Set 方法。同样,基于文本的控件具有 getText
回调。
但是是否有任何与 属性 Get 方法等同的方法..?根据回调的倒置性质,这些回调似乎很可能是以 set
开头的回调,例如 setPressed
或 setText
...但我还没有找到任何回调。
它们不存在吗,因为 get
实际上是 set
,反之亦然..?
没有回调来获取这些属性的值 - 因为您是设置各种值的人,所以您应该是在内部存储这些值的人,从而为功能区和您的代码公开它们.
VSTO Ribbon Designer "wraps" up Ribbon XML 以便开发人员可以像使用 Windows 一样使用 basic 控件] 表单控件。这意味着可以在 run-time 读取和写入属性(XML 中的属性),而不是通过回调。此外,功能区控件 objects 公开 事件 而不是开发人员需要编写事件回调代码。
(请注意,对于更复杂的内容,有必要使用功能区 XML。设计器实际上仅适用于从工具箱添加的基本控件。)
文档是 here。下面是一个小例子来演示。
例如,DropDown
控件已添加到名为 DropDown1
的功能区组中。它可以在代码文件 Ribbon1.Designer.cs
中找到,它被声明为
internal Microsoft.Office.Tools.Ribbon.RibbonDropDown dropDown1;
并通过
实施// dropDown1
//
ribbonDropDownItem1.Label = "Item0";
ribbonDropDownItem2.Label = "Item1";
ribbonDropDownItem3.Label = "Item2";
ribbonDropDownItem4.Label = "Item3";
this.dropDown1.Items.Add(ribbonDropDownItem1);
this.dropDown1.Items.Add(ribbonDropDownItem2);
this.dropDown1.Items.Add(ribbonDropDownItem3);
this.dropDown1.Items.Add(ribbonDropDownItem4);
this.dropDown1.Label = "dropDown1";
this.dropDown1.Name = "dropDown1";
this.dropDown1.SelectionChanged += new System.EventHandler<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>(this.dropDown1_SelectionChanged);
请注意,此文件中的信息由 "Tools" 生成,开发人员不得对其进行编辑。可以,但不能保证 "Tools" 不会做出否定任何编辑的更改。但从中可以看出加载 Ribbon 时执行了什么(属性设置和加载列表)以及事件的创建(这将是 Ribbon XML 中的回调)。显示的所有属性和设置都是使用设计器中提供的 Properties
window 生成的,与 Windows 表单控件相同。
然后在项目中的一个Ribbon组(任何选项卡,任何组)中添加了一个按钮。 Double-click 使用默认的 Click
处理程序打开 Ribbon1.cs
中的代码页,并添加了代码存根。大括号之间的代码是开发者敲的
请注意此代码如何使用 属性 ,这些属性被读取 (this.dropDown1.SelectedItem.Label
) 并被设置 (ddItem.Label
)。该代码显示一条消息,其中包含当前所选项目的标题,创建一个新项目,设置标题和屏幕提示,将其添加到下拉列表中,然后选择该项目。
private void btnSetGetDD1_Click(object sender, RibbonControlEventArgs e)
{
MessageBox.Show(this.dropDown1.SelectedItem.Label);
RibbonDropDownItem ddItem = new RibbonDropDownItem();
ddItem.Label = "new item three added";
ddItem.ScreenTip = "next test";
this.dropDown1.Items.Add(ddItem);
this.dropDown1.SelectedItemIndex = this.dropDown1.Items.Count - 1;
}