Сохранение выбранных элементов списка (связанных) в массив в C # - PullRequest
1 голос
/ 21 июля 2011
string[] chkItems = new string[4];    
string[] str = new string[4];
str[0] = txtID.Text;
str[1] = txtName.Text;
str[2] = txtEmail.Text;
itemCount = ltbxInterests.SelectedItems.Count;
for (int i = 0; i <= itemCount; i++)
{
  ltbxInterests.SelectedItems.CopyTo(chkItems, 0); 
  // here it is returning an exception 
  //"Object cannot be stored in an array of this type."
}

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

Ответы [ 3 ]

2 голосов
/ 21 июля 2011

Пара вопросов здесь, chkItems определяется как длина 4, поэтому вы получите исключение, если попытаетесь поместить более 4 элементов. Исходный массив SelectedItems имеет тип объекта, поэтому вам нужно будет привести результат.

Предполагая, что вы помещаете только строки в список, который вы можете использовать (не забудьте сослаться на System.Linq)

string[] str = new string[4];
str[0] = txtID.Text;
str[1] = txtName.Text;
str[2] = txtEmail.Text;

string[] chkItems = ltbxInterests.SelectedItems.OfType<string>().ToArray();

Если вы хотите ограничить первые 4 элемента, вы можете заменить последнюю строкудо

string[] chkItems = ltbxInterests.SelectedItems.OfType<string>().Take(4).ToArray();

Также вы можете сократить код, чтобы использовать инициализатор массива (но это сделает длину строки 3, потому что у вас есть только 3 элемента):

string[] str = new [] {
  txtID.Text,
  txtName.Text,
  txtEmail.Text,
}
1 голос
/ 21 июля 2011

SelectedItems является коллекцией Object, тогда, чтобы использовать CopyTo методы, chkItems должен быть массивом объекта типа (т.е. object[]).

В противном случае вы можете использовать LINQ для преобразования, например, в список строк:

var selectedList = ltbxInterests.SelectedItems.OfType<object>()
                                              .Select(x => x.ToString()).ToList();
0 голосов
/ 21 июля 2011

Вы должны проверить тип> chkItems.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...