当前位置: 首页>>代码示例>>C#>>正文


C# MenuItem._validate方法代码示例

本文整理汇总了C#中MenuItem._validate方法的典型用法代码示例。如果您正苦于以下问题:C# MenuItem._validate方法的具体用法?C# MenuItem._validate怎么用?C# MenuItem._validate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MenuItem的用法示例。


在下文中一共展示了MenuItem._validate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: getMenuResult

        private static int getMenuResult(int x, int y, MenuItem menuItem, bool isNewMenu)
        {
            #region Prepare Variables

            menuItem._validate();
            var menuItems		= menuItem.ChildMenuItems;
            var options			= menuItem.Options;
            var menuItemsText	= menuItems.Select(a => a.Caption).ToList();
            var maxItemLength	= menuItemsText.Max(a => a.Length);

            var useArrows		= options.Mode != MenuMode.ShortkeysOnly;
            var useShortkeys	= options.Mode != MenuMode.ArrowsOnly;
            var colorScheme		= options.ColorScheme;

            #endregion

            #region Draw menu if necessary

            if (isNewMenu)
            {
                if (currentMenuPosition == 0)
                {
                    currentMenuPosition = -1;
                    for (var i = 0; i < menuItems.Count; i++)
                    {
                        if (menuItems[i].IsActive)
                        {
                            currentMenuPosition = i;
                            break;
                        }
                    }
                }

                if (currentMenuPosition == -1)
                    return -1;

                drawMenu(x, y, menuItem);
            }

            var linesPerItem = options.ItemSpacing+1;
            var xPos = x + 1 + options.FrameSpacingHorizontal + (options.Mode != MenuMode.ArrowsOnly ? 4 : 0);
            #endregion

            #region	Get action result

            while (true)
            {
                #region Highlight current choice if needed

                var yPos = y + 1 + options.FrameSpacingVertical + currentMenuPosition*linesPerItem;
                if (useArrows)
                {
                    var currentMenuItemText = options.UseSelectedCaps ? menuItemsText[currentMenuPosition].ToUpper() : menuItemsText[currentMenuPosition];
                    ZOutput.Print(
                        xPos, yPos,
                        currentMenuItemText.PadRight(maxItemLength, ' '),
                        options.UseSelectedForeColor ? colorScheme.SelectedForeColor :  colorScheme.TextForeColor,
                        options.UseSelectedBackColor ? colorScheme.SelectedBackColor :  colorScheme.TextBackColor);
                }

                #endregion

                #region Escape key and any additional hotkeys

                var key = Console.ReadKey(true).Key;
                if (key == ConsoleKey.Escape  ||  key == ConsoleKey.Backspace)
                    return -1;

                if (hotKeyValues != null  &&  hotKeyValues.ContainsKey(key))
                {
                    hotKeyValues[key]();
                }

                #endregion

                #region Short Keys logic

                if (useShortkeys  &&  key >= ConsoleKey.D1  &&  key <= (ConsoleKey)(menuItems.Count+48))
                {
                    var val = (int)key - 49;
                    if (menuItems[val].IsActive)
                        return val;
                }

                #endregion

                #region Arrow Control logic

                if (useArrows)
                {
                    var oldPosition = currentMenuPosition;

                    switch (key)
                    {
                        case ConsoleKey.DownArrow:
                            do
                            {
                                currentMenuPosition = (currentMenuPosition < menuItems.Count-1) ? currentMenuPosition + 1 : 0;
                            } while (!menuItems[currentMenuPosition].IsActive);
                            break;
//.........这里部分代码省略.........
开发者ID:ZeroByte1987,项目名称:ConsoleGames,代码行数:101,代码来源:ZMenu.cs


注:本文中的MenuItem._validate方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。