我在使用 DevExpress 时遇到了一个问题,即:RibonControl 中的按钮。 我为RibonControl中按钮的方式编写了事件“click”,如下:
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 中的类似(路由事件)所致,对吗?以及如何解决?
最佳答案
以下是为您的任务查找正确的代码片段的方式:
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了解更多详情。
关于winforms - DevExpress 中的 BarButtonItem 和 RibbonBarManager 点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25605462/