点击“Add”按钮关闭对话框,Visual Studio会为我们添加一个Ribbon界面,同时会为我们添加一个名为MyRibbon的类来对这个界面进行管理。这时,我们就可以在Visual Studio的Ribbon界面设计器中对Ribbon界面进行编辑了。根据我们的需要,我们在Ribbon界面上添加两个普通按钮,分别用于两个活动面板的显示,然后再添加一个开关按钮,控制活动面板的显示和隐藏。在设计器中,编辑Ribbon界面如下:
图6 在设计器中编辑Ribbon界面
控制活动面板的显示和隐藏
完成Ribbon界面的编辑后,我们就可以实现面板上各个按钮控件的动作,控制两个活动面板的显示和隐藏。
首先,我们在MyRibbon类中添加两个活动面板类的对象所为类的属性。
public partial class MyRibbon : OfficeRibbon
{
ActionsPaneControl1 actionsPane1 = new ActionsPaneControl1();
ActionsPaneControl2 actionsPane2 = new ActionsPaneControl2();
/// …
}
然后,在MyRibbon类的构造函数中,添加界面上按钮控件的事件响应函数:
public MyRibbon()
{
InitializeComponent();
this.button1.Click += new System.EventHandler
<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>
(this.button1_Click);
this.button2.Click += new System.EventHandler
<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>
(this.button2_Click);
this.toggleButton1.Click += new System.EventHandler
<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>
(this.toggleButton1_Click);
this.Load += new System.EventHandler
<Microsoft.Office.Tools.Ribbon.RibbonUIEventArgs>
(this.MyRibbon_Load);
}
{
ActionsPaneControl1 actionsPane1 = new ActionsPaneControl1();
ActionsPaneControl2 actionsPane2 = new ActionsPaneControl2();
/// …
}
然后,在MyRibbon类的构造函数中,添加界面上按钮控件的事件响应函数:
public MyRibbon()
{
InitializeComponent();
this.button1.Click += new System.EventHandler
<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>
(this.button1_Click);
this.button2.Click += new System.EventHandler
<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>
(this.button2_Click);
this.toggleButton1.Click += new System.EventHandler
<Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs>
(this.toggleButton1_Click);
this.Load += new System.EventHandler
<Microsoft.Office.Tools.Ribbon.RibbonUIEventArgs>
(this.MyRibbon_Load);
}
大家可以看到在这段代码中,我们同时也对Ribbon界面加载的事件进行了处理,所以在这里我们将MyRibbon_Load()函数实现如下。在这段代码中,我们将两个活动面板添加为当前工作簿的活动面板,并且默认状态下不显示这些面板。
private void MyRibbon_Load(object sender, RibbonUIEventArgs e)
{
// 添加活动面板
Globals.ThisWorkbook.ActionsPane.Controls.Add(actionsPane1);
Globals.ThisWorkbook.ActionsPane.Controls.Add(actionsPane2);
// 默认隐藏活动面板
actionsPane1.Hide();
actionsPane2.Hide();
Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = false;
}
{
// 添加活动面板
Globals.ThisWorkbook.ActionsPane.Controls.Add(actionsPane1);
Globals.ThisWorkbook.ActionsPane.Controls.Add(actionsPane2);
// 默认隐藏活动面板
actionsPane1.Hide();
actionsPane2.Hide();
Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane = false;
}
最后,我们将Ribbon界面上各个按钮控件的点击事件处理函数实现如下,完成活动面板的显示和隐藏:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
// 显示侧面板
Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane =
true;
// 控制活动面板的显示
actionsPane2.Hide();
actionsPane1.Show();
}
private void button2_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane =
true;
actionsPane1.Hide();
actionsPane2.Show();
}
private void toggleButton1_Click(object sender,
RibbonControlEventArgs e)
{
// 根据按钮状态,显示或者隐藏侧面板
if (toggleButton1.Checked == true)
{
Globals.ThisWorkbook.Application.
DisplayDocumentActionTaskPane = false;
}
else
{
Globals.ThisWorkbook.Application.
DisplayDocumentActionTaskPane = true;
}
}
{
// 显示侧面板
Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane =
true;
// 控制活动面板的显示
actionsPane2.Hide();
actionsPane1.Show();
}
private void button2_Click(object sender, RibbonControlEventArgs e)
{
Globals.ThisWorkbook.Application.DisplayDocumentActionTaskPane =
true;
actionsPane1.Hide();
actionsPane2.Show();
}
private void toggleButton1_Click(object sender,
RibbonControlEventArgs e)
{
// 根据按钮状态,显示或者隐藏侧面板
if (toggleButton1.Checked == true)
{
Globals.ThisWorkbook.Application.
DisplayDocumentActionTaskPane = false;
}
else
{
Globals.ThisWorkbook.Application.
DisplayDocumentActionTaskPane = true;
}
}
这样,我们就可以通过Ribbon界面上的按钮来控制侧面板的显示和隐藏。
图7 Ribbon界面