コード例 #1
0
ファイル: Menu.cs プロジェクト: TheLegion96/fightthelandlord
        public virtual void Loop()
        {
            if (this._current == null) return;

            //菜单的显示与响应
            do
            {
                this._current.Output();
                var cki = Console.ReadKey();
                this.Writer.W("\n\n");
                var isRightCmd = false;
                foreach (var m in this._current.SubMenus)
                {
                    var isVisible = m.DoCheckVisible();
                    if (isVisible != null && isVisible.Value &&
                        m.ShortCutKey.ToString().Equals(cki.Key.ToString(), StringComparison.OrdinalIgnoreCase))
                    {
                        if (m.SubMenus.Count > 0) this._current = m;
                        isRightCmd = true;
                        m.DoAction();
                        break;
                    }
                }
                if (!isRightCmd) Warning();

            } while (this._isDoLoop);
        }
コード例 #2
0
 public MenuItem(Menu owner, MenuItem parent, string caption, string intro, ConsoleKey shortCutKey, Action<MenuItem> action, VisibleChecker visibleChecker)
 {
     this._owner = owner;
     this._parent = parent;
     this._caption = caption;
     this._intro = intro;
     this._shortCutKey = shortCutKey;
     this.Action = action;
     this.VisibleChecker = visibleChecker;
 }
コード例 #3
0
ファイル: Menu.cs プロジェクト: TheLegion96/fightthelandlord
 public virtual void Escape()
 {
     if (this._current.Parent != null)
     {
         this._current = this._current.Parent;
     }
     else this._isDoLoop = false;
 }
コード例 #4
0
 /// <summary>
 /// 获取菜单位于树中的路径
 /// </summary>
 public static string GetLocation(MenuItem cmi)
 {
     if (cmi == null) return string.Empty;
     if (cmi.Parent != null) return MenuItem.GetLocation(cmi.Parent) + "." + cmi.Caption;
     return cmi.Caption;
 }
コード例 #5
0
 /// <summary>
 /// 添加“返回上级”菜单
 /// </summary>
 public virtual MenuItem AddEx(string caption)
 {
     var cmi = new MenuItem(_owner, this, caption, null, ConsoleKey.Escape, cm => { cm.Owner.Escape(); }, null);
     this.SubMenus.Add(cmi);
     return cmi;
 }
コード例 #6
0
 public virtual MenuItem Add(string caption, string intro, ConsoleKey shortCutKey, Action<MenuItem> action, VisibleChecker visibleCheck)
 {
     var cmi = new MenuItem(_owner, this, caption, intro, shortCutKey, action, visibleCheck);
     this.SubMenus.Add(cmi);
     return cmi;
 }