首页 > 代码库 > winfrom递归生成菜单,支持多级嵌套
winfrom递归生成菜单,支持多级嵌套
private void Form2_Load(object sender, EventArgs e) { CreateMenu(); }
private void CreateMenu() { //定义菜单条 Bar bar = new Bar("Menu Bar"); bar.MenuBar = true; bar.Stretch = true; bar.Style = eDotNetBarStyle.Office2003; dotNetBarManager1.Bars.Add(bar); //添加到dotNetBarManager1对象 bar.DockSide = eDockSide.Top; //设置Dock样式 System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); // 开始监视代码运行时间 var listMenu = GetButtonItem(0); listMenu.ToList().ForEach(x => bar.Items.Add(x)); bar.RecalcLayout(); //重绘布局 stopwatch.Stop(); // 停止监视 TimeSpan timespan = stopwatch.Elapsed; // 获取当前实例测量得出的总时间 this.labelX1.Text = "生成菜单耗时" + timespan.TotalSeconds.ToString() + "毫秒"; //textBoxX1.LostFocus += (s, e) => { MessageBox.Show("失去焦点"); }; }
public class JsonTuple<T1, T2> { public T1 Item1 { get; set; } public T2 Item2 { get; set; } public KeyValuePair<Int32, Int32> KvType { get; set; } public Boolean Tag { get; set; } public JsonTuple(T1 item1, T2 item2, KeyValuePair<Int32, Int32> kvType, bool tag) { this.Item1 = item1; this.Item2 = item2; this.KvType = kvType; this.Tag = tag; } public JsonTuple(T1 item1, T2 item2, bool tag) : this(item1, item2, new KeyValuePair<int, int>(0, 0), tag) { } }
private List<JsonTuple<string, string>> GetMenuSetter() { List<JsonTuple<string, string>> listMenu = new List<JsonTuple<string, string>> { //有&会在字体下面显示下划线 new JsonTuple<string,string>("bFile","&File",new KeyValuePair<int, int>(1,0),false), new JsonTuple<string,string>("bOpen","Open",new KeyValuePair<int, int>(2,1),false), new JsonTuple<string,string>("bClose","&Close",new KeyValuePair<int, int>(3,1),false), new JsonTuple<string,string>("bExit","&Exit",new KeyValuePair<int, int>(4,1),true), //==================================================== new JsonTuple<string,string>("bCut","&Cut",new KeyValuePair<int, int>(5,0),false), new JsonTuple<string,string>("bCopy","&Copy",new KeyValuePair<int, int>(6,5),false), new JsonTuple<string,string>("bPaste","&Paste",new KeyValuePair<int, int>(7,5),false), new JsonTuple<string,string>("bClear","&Clear",new KeyValuePair<int, int>(8,5),true), }; return listMenu; }
private IEnumerable<ButtonItem> GetButtonItem(int pid) { var listMenu = GetMenuSetter(); var query = listMenu.Where(x => x.KvType.Value =http://www.mamicode.com/= pid).Select(x =>>支持多级嵌套,看看效果:
winfrom递归生成菜单,支持多级嵌套
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。