C # Tree в Array (с массивами в качестве дочерних элементов) - PullRequest
1 голос
/ 08 марта 2012

ну, я почти новичок в c # и не могу понять, как работают многоуровневые массивы в c #.

Я сделал TreeView с меню в нем, например:


  • menu_1
  • - child_1.1
  • - child_1.2
  • ---- child_1.2.1
  • ---- child_1.2.2
  • ---- child_1.2.3
  • - child_1.3
  • Menu_2
  • - child_2.1
  • - child_2.2
  • ---- child_2.2.1

каждый элемент MenuItem должен иметь 6 значений / атрибутов / значений proppertys, например:

Item = {ID: int, "NAME: String, POSITION: String, ACTIVE: Bool, ACTION: bool, PATH: string}

so:

Menu_1 = { 1, "File", "1", true, false, "" }
child_1.1 = { 2, "Open", "1.1", true, true, "./open.exe" }

... и так далее

на данный момент:

Я вручную установил несколько строковых массивов ( String [] ) для eathmenuItem и заполнил его информацией.

String[] Item_1 = {"1", "File", "1", "1", "0", ""};
String[] Item_2 = ...

...

теперь я хочу поместить все эти String-Array в ArrayList [] и Sort () их используя"ПОЗИТИО"N "значение каждого элемента ( Item_1 [2] )

Также я хочу, чтобы код динамически создавал этот массив самого элемента, считывая значения из таблицы SQL.эти массивы НЕ должны быть просто строковыми массивами, как я делал сейчас, потому что я хочу, чтобы идентификатор оставался целым, а значение ACTIVE и ACTION оставалось логическим.

конечный продукт должен выглядеть следующим образом:

MenuItems = ArrayList(
    item_1 = Array(Int, String, String, Bool, Bool, String)  // \
    item_2 = Array(Int, String, String, Bool, Bool, String)  //  \
    item_3 = Array(Int, String, String, Bool, Bool, String)  //  / all sortet by the 3rd value, the position )
    item_4 = Array(Int, String, String, Bool, Bool, String)  // /
    ...
    )
)

Спасибо всем, кто может мне помочь.

Ответы [ 2 ]

0 голосов
/ 08 марта 2012

Вы не можете сделать это только с массивами.Создайте класс, содержащий подэлементы в виде массива или в виде списка, если вы хотите быть гибким

0 голосов
/ 08 марта 2012

Предполагая, что вы находитесь на C # 2.0 или новее, я бы использовал общий список вместо ArrayList и контейнера классов, а не просто массивы.Предполагая, что вы используете .NET 3.5 или более позднюю версию, я бы также предложил использовать LINQ для сортировки.

Сначала создайте контейнер класса для типа пунктов меню:

public class MenuItem
{
    public int ID {get;set;}
    public string Name {get;set;}
    public string Position {get;set;}
    public bool Active {get;set;}
    public bool Action {get;set;}
    public string Path {get;set;}
} 

Затем вы можете сохранить экземпляры этого класса в общем списке:

var items = new List<MenuItem>();
items.Add(new MenuItem{ID="1", Name="File", Position="1", Active=true, Action=false, Path=""});

Затем, чтобы отсортировать этот список по позиции, вы можете использовать LINQ:

var sorted = items.OrderBy(i => i.Position);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...