C#2005  模拟资源管理器
资源管理器对读者来说都不陌生。在Windows XP操作系统中,用户可以右击【开始】按钮,从弹出的菜单中选择【资源管理器】命令打开【资源管理器】窗口,如图3-3所示:
图3-3  【资源管理器】窗口
在本实例中,我们将模拟如何实现【资源管理器】窗口左侧的树形菜单。这里我们使用SortedList集合来存储树形菜单中的节点元素,然后根据这些结点的索引来判断该节点元素是根节点元素,还是子节点元素。实现该实例的过程如下所示:
(1)启动Visual Studio 2005,单击【文件】|【新建项目】命令,将打开【新建项目】对话框,
在模板部分选中【控制台应用程序】选项,然后在【名称】文本框中输入“Tree”,选择合适的位置,并启用【创建解决方案的目录】选项。
(2)设置完成后,单击【确定】按钮打开当前创建的项目。然后在Program.cs文件中编写相应的代码。由于本实例用到SortedList集合,所以需要引用相应有命名空间。另外,由于前面定义了名称项目名称为Tree,所以Microsoft Visual Studio 2005声明了命名空间Tree,及系统默认的类Program。具体代码如下所示:
using System;
using System.Collections.Generic;
using System.Collections;
using System.Text;
namespace Tree
{
    class Program
    {
          //程序具体代码
    }
}
(3)在上述代码中有一个很重要的方法main,它是执行控制台应用程序时默认调用的方法。在本实例中,它用于对该程序进行控制以确定是添加元素、删除元素,还是退出当前程序。具体代码如下所示:
        static protected SortedList slList = new SortedList();
        static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                    slList.Add("Node" + i.ToString(), "模拟节点" + i.ToString());
            }
            System.Console.WriteLine("-----------------模拟资源器实例----------------");
            ShowList(slList);
        osList:
            {
                System.Console.WriteLine("-----------------请选择要执行的操作:----------------");
                System.Console.WriteLine("(1)向集合中添加元素");
                System.Console.WriteLine("(2)删除集合中的元素");
                System.Console.WriteLine("(3)退出程序");
                System.Console.WriteLine("请输入要执行操作的编号:");
                string strNumer = System.Console.ReadLine();
                if (strNumer == "1")
                {
                    AddList(slList);
                    ShowList(slList);
                    goto osList;
                }
                else if (strNumer == "2")
                {
                    DeleteList(slList);
                    ShowList(slList);
                    goto osList;
                }
                else if (strNumer == "3")
                {
                    goto osListExit;
                }
                else
                {
                    System.Console.WriteLine("对不起,输入的操作编号不正确!");
                    goto osList;
                }
            }
            osListExit:
            {
                System.Console.WriteLine("成功退出程序!");
            }
        }
上述代码,通过判断用户输入的操作编号来控制程序的执行。其中调用了方法:ShowList()、AddList()和DeleteList();使用goto语句跳转到程序标签osList处,以使程序在执行完某一操作后返回操作菜单。
(4)上述代码中调用的ShowList方法用于输出SortedList集合中的所有元素。为了模拟树形菜单的效果,这里根据元素的索引对输出进行了处理。具体代码如下所示:
        //输出当前集合的所有元素
        protected static void ShowList(System.Collections.SortedList slList)
        {
            int count = 0;
            IDictionaryEnumerator enumerator = slList.GetEnumerator();
            System.Console.WriteLine("-----------------输出集合中所有元素[开始]----------------");
            while (enumerator.MoveNext())
            {
                if ((count % 2 == 0) || (count % 3 == 0))
                {
                    string strValue =(string)enumerator.Value;
                    string strKey = (string)enumerator.Key;
                    System.Console.WriteLine("  ㈠{0}[{1}]", strValue,strKey);
                }
                else
                {
                    string strValue = (string)enumerator.Value;
                    string strKey = (string)enumerator.Key;
                    System.Console.WriteLine("㈩{0}", strValue, strKey);
                }
                count++;
            }
            System.Console.WriteLine("-----------------输出集合中所有元素[结束]----------------");
        }
(5)第3步代码中调用的AddList方法用于向SortedList集合中添加元素,它调用了SortedList集合的Add方法。该方法代码如下所示:
        //添加元素节点
        protected static void AddList(System.Collections.SortedList slList)
        {
            System.Console.WriteLine("请输入所要添加元素的key值:");
            string tKey = System.Console.ReadLine();
            System.Console.WriteLine("请输入所要添加元素的value值:");
            string tKeyValue = System.Console.ReadLine();
            slList.Add(tKey,tKeyValue);
sortedlist        }
(6)第3步代码中调用的AddList方法用于从SortedList集合中删除元素,它调用了SortedList集合的Remove方法。该方法代码如下所示:
        //删除元素节点
        protected static void DeleteList(System.Collections.SortedList slList)
        {
            System.Console.WriteLine("请输入所要删除元素的key值:");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。