65.9K
CodeProject 正在变化。 阅读更多。
Home

用于控制台应用程序的基于文本的菜单类

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.43/5 (8投票s)

2003 年 1 月 26 日

CPOL

2分钟阅读

viewsIcon

66472

downloadIcon

2166

这个类通过使用委托,帮助你在控制台应用程序中创建和使用菜单。它将向你展示数组列表和委托的基础知识。

引言

这是我的第一篇文章,可能包含错误,语言可能不够完美,但我会不断更新和编辑它,直到它变得更好,所以,我需要你的反馈。

几乎每个用 C# 编写的基于控制台的程序都会使用 Console.ReadLine() 来读取数据。通常,程序员会使用 if-else 语句来处理数据输入,尤其是在从菜单中输入选项时。这个有趣的类将教你集合和委托的基础知识,同时为更强大的菜单类提供一个良好的框架。

菜单类及其接口

菜单类非常易于使用;只需实例化它,并使用 Add 方法向菜单添加新选项,最后,使用 Show 方法打印它并让它处理用户的选择。

它的工作原理如下:每个菜单选项都是一个 MenuItem 类。它只不过是一个包含选项描述和 delegate(一个指向函数的对象)的对象,当且如果选择了该选项时,将调用该对象。这个委托将指向处理该选择的函数。

MenuItems 存储在 ArrayList 中,这是一个非常有用的集合类。集合类不言自明:它保存对象的集合,通常提供搜索、删除和对象操作功能。ArrayList 非常简单;名称 Array 来自于它可以转换为任何类型的 Array,并且我将使用它,因为 Menu 类不需要 Hashtable 集合或 Dictionary 集合的强大功能,这些是更增强的集合类。ArrayList 对我们来说就足够了。

创建和显示菜单

首先,编写处理用户选择和委托的函数。你会看到这有多么简单。我们的 Menu 类使用 MenuCallback 委托,它不返回任何内容并且没有参数。每当你使用委托时,你需要

  • 创建一个新的委托类型,并且
  • 使用 new 关键字存储一个新的委托。
private static MenuCallback mcOption1 = new MenuCallback(Option1);
private static MenuCallback mcOption2 = new MenuCallback(Option2);

private static void Option1()
{
  Console.WriteLine("Option 1 chosen.");
}

private static void Option2()
{
  Console.WriteLine("Option 2 chosen.");
}

其次,创建一个新的 Menu 实例,并将委托和选项添加到它。然后,显示它。这也很简单。

Menu m = new Menu();
m.Add("Option 1", mcOption1);
m.Add("Option 2", mcOption2);
m.Show();

现在,一切都完成了。Menu 类将处理用户的输入,并使用你创建的委托调用所需的函数。示例将更好地展示所有内容。

© . All rights reserved.