1

コース一覧サイトのブレッドスクラム/パスを作成する必要があります

たとえば、コースにはさまざまなメニュー項目があり、以下のように表示する必要があります

  • Chapter01/
  • Chapter01/Lesson01/
  • Chapter01/Lesson01/Exam01/
  • Chapter01/Lesson01/Exam01/Question03/
  • Chapter01/Lesson01/Exam01/Question04/Item01
  • Chapter01/Lesson02/
  • Chapter02
  • Chapter02/Lesson01

上記は、アイテムがパスに配置される方法の単なる例です

これを思いつくために、私はアイテムのリストを持っています

Public Class Item
{
    public string Level
    {
        get;
        set;
    }

    public string Title
    {
        get;
        set;
    }
}

リストは以下のように作成できます

IList<Item> Items = new List<Item>();
Items.Add (new Item {Level = "0", Title = "Chapter01"});
Items.Add (new Item {Level = "1", Title = "Lesson01"});
Items.Add (new Item {Level = "2", Title = "Exam01"});
Items.Add (new Item {Level = "3", Title = "Question 03"});
Items.Add (new Item {Level = "3", Title = "Question 04"});
Items.Add (new Item {Level = "4", Title = "Item 01"});
Items.Add (new Item {Level = "1", Title = "Lesson02"});

Items.Add (new Item {Level = "0", Title = "Chapter02"});
Items.Add (new Item {Level = "1", Title = "Lesson01"});

親アイテムのレベルは常に 0 で、子アイテムのレベルは 1、2、3 などです。

これを達成するためにC#で再帰関数を考え出すように誰かに手伝ってもらえますか

4

1 に答える 1

2

私が最後に行った方法は、実際にメニュー項目をメニュー項目に構成することでした。例えば:

public class MenuItem{
    public string Caption {get; set;}
    public int Level {get; set; }
    public List<MenuItem> MenuItems {get; set;}
    public MenuItem(string caption){
        Caption = caption;
        MenuItems = new List<MenuItem>();
    }
}

次に、メニュー構造を構築するときに、List<MenuItem>最上位の MenuItem オブジェクトを保持する から始め、次にMenuItems.Add(new MenuItem("Question 1")).

階層を構築したら、次のようなものを使用して出力できます。

private void DisplyMenuStructure(List<MenuItems> menu){
    foreach(MenuItem currentItem in menu){
        if (currentItem.MenuItems.Count>0){
            DisplayMenuStructure(currentItem.MenuItems);
        } else {
            Console.WriteLine(currentItem.Caption);
        }
    }
}

階層を設定するには、次のようなものを使用します。

public void BuildMenumStructure(){
    //Instantiate a File menu
    MenuItem root = new MenuItem("File");
    root.Level = 0;
    //Add some menu items
    root.MenuItems.Add(new MenuItem("New"){Level = 1});
    root.MenuItems.Add(new MenuItem("Edit"){Level = 1});
    //Build a save menu and add it in
    MenuItem saveMenu = new MenuItem("Save");
    saveMenu.MenuItems.Add(new MenuItem("Save As"){Level = 2});
    saveMenu.MenuItems.Add(new MenuItem("Save"){Level = 2});
    root.MenuItems.Add(saveMenu);
}
于 2012-07-12T21:09:14.453 に答える