将代码从win形式转换为devexpress

时间:2016-01-31 05:19:52

标签: c# devexpress

此代码使用win form的代码。所以我想将它与DevExpress一起使用,问题是我不知道DevExpress中哪个工具可以使用而不是代码。我有一个类如下:谢谢

using System.Drawing;
using System;

namespace Extender
{

public class MenuItem : System.Windows.Forms.ToolStripMenuItem
{

    private string _Command;

    public string Command
    {
        get
        {
            return _Command;
        }
        set
        {
            _Command = value;
        }
    }

    private object _Argument;

    public object Argument
    {
        get
        {
            return _Argument;
        }
        set
        {
            _Argument = value;
        }
    }

    private Int16 _ModuleID;

    public Int16 ModuleID
    {
        get
        {
            return _ModuleID;
        }
        set
        {
            _ModuleID = value;
        }
    }

   public      MenuItem()
    {
    }

 public     MenuItem(string text)
    {
        this.Text = text;
    }

  public       MenuItem(string text, EventHandler onclick) :
                this(text)
        {
            this.Click += onclick;
        }
    }
}

以下代码是我使用winform

的实体框架从数据库创建菜单的方法
private void LoadMenus(ToolStripItemCollection Menu,string ParentName)
    {

        using (var ctx = new CambbusEntities())
        {

            foreach (var obj in ctx.view_ObjectDetails.Where(a => a.ObjectType == "MENU" && a.ParentName==ParentName &&a.LanguageID == Cambbus.Properties.Settings.Default.LanguageID ).OrderBy(a=>a.SortOrder))
            {

                string mText = obj.ObjectText;
                string nName = obj.ObjectName;
                if (mText == "-")
                    continue;
                Extender.MenuItem m = new Extender.MenuItem(mText);
                m.Alignment = ToolStripItemAlignment.Left;
                //m.Text = obj.ObjectText;
                //m.Name = obj.ParentName;
                m.ModuleID = (Int16)obj.ModuleID;
                m.Command = obj.Command;
                m.Argument = obj.Argument;
                m.Image = App.GetImageByEntity((obj.ImageTag)+"");

                if (m.Command!=""){
                    m.Click += DynamicMenuClick;
                }
                bool Is4Perm = obj.ModuleID > 0;
                if(Is4Perm){
                    m.Enabled = CurrentUser.CanViewModule((Int16)obj.ModuleID);
                }
                Int16 shortcutNum = ((Int16)(obj.ShortcutNum));
                if (shortcutNum != 0)
                {
                   m.ShortcutKeys = ((System.Windows.Forms.Keys)(Keys.Control)) | ((System.Windows.Forms.Keys)(shortcutNum));
                }
                Menu.Add(m);
                LoadMenus(m.DropDownItems,nName);

            }
        }
    }

问题是我不知道可以使用winform的DevExpress的属性。那么我可以使用DevExpress而不是winform吗? this is my image of winform 我希望通过使用我的类和方法更改为与图片DevExpress Menu相同的DevExpress。谢谢

1 个答案:

答案 0 :(得分:0)

DevExpress栏有几种类型的菜单项。他们的列表可在The List of Bar Items and Links获得。由于您需要处理项目的点击,我认为您需要BarButtonItem。您可以使用BarButtonItem.Caption属性设置其标题。点击即可处理BarItem.ItemClick事件。

<强>被修改

使用DevExpress,您可以使用Bar替换橙色工具栏。为此,只需在表单上放置BarManager即可。它会创建一些默认栏。如上所述,程序,销售,帮助等命令可以用BarButtonItem替换。可以使用BarSubItem完成列表及其子项目。我看到你有Windows项目。如果您的应用程序是MDI,我建议您使用BarMdiChildrenListItem。它将自动为所有MDI子表单生成项目。

如果您需要在代码中生成项目,请参阅BarManager Class帮助主题,该主题为此提供了一些代码。