BarButtonItem& RibbonBarManager在DevExpress中单击事件

时间:2014-09-01 12:03:53

标签: winforms devexpress ribbon

我对DevExpress有一个问题,即:RibonControl中的按钮。 我写了这个活动"点击"对于RibonControl中按钮的方式如下:

 private void barButtonClick_ItemClick(object sender, ItemClickEventArgs e)
 {
    BarButtonItem item = (BarButtonItem)(sender);
    //..... if else ...
 }

我在运行时收到错误消息:

Additional information: Unable to cast object of type 'DevExpress.XtraBars.Ribbon.RibbonBarManager' to type 'DevExpress.XtraBars.BarButtonItem'.

我认为,这个错误是由于"点击" DevExpress中的按钮类似于WPF(路由事件),对吗?以及如何解决?

1 个答案:

答案 0 :(得分:2)

以下是正确的代码段如何查找您的任务:

void barButtonItem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {
    BarButtonItem bItem = e.Item as BarButtonItem;
    // ... do something
}

文档:ItemClickEventArgs.Item属性。

事实上,此事件处理程序中的sender参数为BarManager而不是BarButtonItem,可以通过DevExpress XtraBars Suite体系结构进行解释。 主要思想是BarItem非视觉元素,无法点击"点击"。 BarItemLink元素是此项目的链接,表示屏幕上的项目。 BarManager实例管理与链接的所有交互,并将所有事件路由到相应的项目和BarManager的事件处理程序。这就是BarManager/RibbonBarManager实例在事件处理程序中显示为sender参数的原因。

有关详细信息,请参阅Items and Links