我正在尝试创建一个DevEx下拉按钮。不幸的是,我遇到了两个我无法弄清楚的问题:
1)我无法正确获取弹出菜单皮肤,即它不像“Office 2010 Blue”那样。我正在使用的代码如下所示:
private void InitializeSendToPricingSheetButton()
{
var barManager = new BarManager();
if (barManager.Controller == null) barManager.Controller = new BarAndDockingController();
barManager.Controller.PaintStyleName = "Skin";
barManager.Controller.LookAndFeel.UseDefaultLookAndFeel = false;
barManager.Controller.LookAndFeel.SkinName = "Office 2010 Blue";
barManager.ItemClick += HandleSendToPricingSheetClick;
barManager.Items.AddRange(new[] { new BarButtonItem(barManager, "Foo"), new BarButtonItem(barManager, "Bar"), new BarButtonItem(barManager, "Baz") });
var popupMenu = new PopupMenu { Manager = barManager };
foreach (var barItem in barManager.Items) popupMenu.ItemLinks.Add((BarItem)barItem);
popupMenu.ItemLinks[1].BeginGroup = true;
dropDownButtonSendToPricingSheet.DropDownControl = popupMenu;
}
2)此按钮位于表单上。如果表单失去焦点(例如我点击Firefox),弹出菜单仍然保持在顶部。它在点击之前不会消失。
任何建议都 赞赏。感谢您帮助我处理DevEx疯狂事件。
答案 0 :(得分:2)
我解决了你的第二个问题。
您应该添加下拉按钮事件处理程序,如下所示:
dropDownButton1.LostFocus += new EventHandler(HidePopUp);
处理程序方法应如下所示:
private void HidePopUp(object sender,object e)
{
dropDownButton1.HideDropDown();
}
答案 1 :(得分:1)
对于第二个问题,您应该将值分配给条形管理器属性:
BarManager manager = new BarManager();
manager.Form = this; // refers to current form
查找以下链接以供参考 https://www.devexpress.com/Support/Center/Question/Details/Q274641
答案 2 :(得分:0)
使用DefaultLookAndFeel
可能更简单将此comp添加到您的表单并设置您要使用的主题。 无需为各个组件设置主题。
defaultLookAndFeel1.LookAndFeel.SetSkinStyle("Office 2010 Blue");