2014-01-05 2 views
0

У меня есть словарь с несколькими значениями, которые я хочу использовать для заполнения списка.C# заполнять список из словаря с несколькими значениями

я получаю «ArgumentOutOfRangeException был необработанное» и «invalidArgument = значение„1“не является допустимым для„индекс“

вот что я надеюсь, достаточно из revelant кода:.

public partial class frmResultList : Form 
{ 

    public class MyLookupCustList 
    { 
     public string sEstNum { get; set; } 
     public string sLName { get; set; } 
     public string sFName { get; set; } 
     public string sCity { get; set; } 
    } 

    public frmResultList(int iMyCount, Dictionary<string, frmResultList.MyLookupCustList> MyDictList) 
    { 
     InitializeComponent(); 
     fillListView(iMyCount, MyDictList); 
    } 

    public void fillListView(int iMyCount, Dictionary<string, frmResultList.MyLookupCustList> MyDictList) 
    { 

     listView1.Clear(); 

     ListViewItem item; 

     for (int i = 0; i < iMyCount; i++) 
     { 
      listView1.Items.Clear(); 
      var o = MyDictList[i.ToString()]; 
      var myListViewItem = new ListViewItem(); 

      myListViewItem = this.listView1.Items.Add(i.ToString()); 
      myListViewItem.SubItems[1].Text = o.sEstNum; 
      myListViewItem.SubItems[2].Text = o.sLName; 
      myListViewItem.SubItems[3].Text = o.sFName; 
      myListViewItem.SubItems[4].Text = o.sCity; 

      listView1.Items.Add(myListViewItem); 

     } 

     listView1.View = View.Details;   
     listView1.Show(); 
     listView1.Refresh(); 


    }  

я получаю исключение при попытке вставить первую подпозицию Здесь ===> myListViewItem.SubItems [1] .Text = o.sEstNum; пожалуйста, помогите, что мне нужно, чтобы исправить это

ответ

0

вам? пытаются обновить элемент с помощью ind ex [1], этот элемент еще не существует, его необходимо создать в первую очередь. То же самое произойдет для ваших подпунктов, к которым вы пытаетесь получить доступ - 2, 3, 4 . Поэтому вам нужно иметь логику, чтобы проверить, существует ли элемент первым, если он его обновляет, в противном случае добавьте его.

+0

Как его создать? можете ли вы показать код для этого? – user3162901

+0

Когда я смотрю на o.sEstNum, он имеет «648». – user3162901

+0

Право, o.sEstNum не проблема, ее другая сторона уравнения. при отладке, посмотрите на свой 'myListViewItem.SubItems', я уверен, что он равен нулю. Если это так, вам нужно создать элементы внутри списка подэлементов, прежде чем пытаться получить к нему доступ. Я пытаюсь получить образец для вас, но я не вижу свойство 'SubItems' в' ListViewItem'. –

Смежные вопросы