C # Строковый массив переменной длины - PullRequest
3 голосов
/ 14 декабря 2011

Основываясь на выборе comboBox1, я заполняю comboBox2. ComboBox2 имеет переменное количество элементов списка. В настоящее время я делаю это вручную, как это:

string[] str1 = { "item1", "item2" }
string[] str2 = { "item1", "item2", "item3" , "item4" }

и т.д.

if (cbox1.SelectedIndex == 0)
{
       cbox2.Items.AddRange(str1);
}
if (cbox1.SelectedIndex == 1)
{
       cbox2.Items.AddRange(str2);
}

и т.д.

Хотя это работает, у меня есть события для 4 выпадающих и 13 возможных вариантов для каждого. Это делает для многих если. Я бы предпочел сделать это с массивом строк, чтобы я мог избавиться от всех if и просто сделать следующее для каждого SelectedIndexChanged:

cbox2.Items.AddRange(str[cbox1.SelectedIndex]);

но я не уверен, смогу ли я сделать это с переменными длинами строк. Я получаю ошибки при выполнении:

string[,] str = { { "Item1", "Item2"},{"Item1", "Item2", "Item3", "Item4"} };

Есть ли способ сделать это?

спасибо!

Ответы [ 3 ]

7 голосов
/ 14 декабря 2011

Вы уже обнаружили, что вы не можете использовать многомерный массив в этой ситуации, потому что ваши массивы имеют разную длину.Однако вместо этого вы можете использовать зубчатый массив :

string[][] str =
{
    new string[] { "Item1", "Item2" },
    new string[] { "Item1", "Item2", "Item3", "Item4" }
};
1 голос
/ 14 декабря 2011

Вы также можете использовать словарь для достижения вашей цели:

Dictionary<int, string[]> itemChoices = new Dictionary<int,string>()
{
    { 1, new [] { "Item1", "Item2" }},
    { 2, new [] { "Item1", "Item2", "Item3", "Item4" }}
};

Тогда вы можете просто позвонить:

cbox1.Items.AddRange(itemChoices[cbox1]);
cbox2.Items.AddRange(itemChoices[cbox2]);
1 голос
/ 14 декабря 2011

Вы можете использовать словарь и сопоставить значения SelectedIndex со строковыми массивами (или, что еще лучше, IEnumerable<string>):

IDictionary<int, string[]> values = new Dictionary<int, string[]>
                                 {
                                    {0, new[] {"item1", "item2"}},
                                    {1, new[] {"item3", "item4", "item5"}},
                                 };
...
string[] items = values[1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...