DevExpress DropDownButton问题

时间:2012-09-24 21:33:34

标签: c# winforms devexpress

我正在尝试创建一个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疯狂事件。

3 个答案:

答案 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");