我对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(路由事件),对吗?以及如何解决?
答案 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。