2016-11-19 8 views
0

私は一般的なプログラミングには新しく、C#で始まっています。リストボックスに項目を追加するように指示されました。しかし、私はコードが動作するように見えることはできません。アイテムがlisboxに追加されると、インデックス内の数字を増やそうとしています。Winformリスト内の項目をインクリメントする方法

 if (this.index < MAX_ITEMS) // MAX_ITEMS or 10 
     { 
      Convert.ToInt32(lstHoldValue.Items.Count); 
      // here about splitting strings as per SA's comment but may need to consider that 
      int dnum; 
      if (int.TryParse(txtInitialise.Text, out dnum)) 
      { 
       (lstHoldValue.Items[this.index++]) = dnum; //index is incremented immediately after it is used 
       txtInitialise.Text = ""; 

       lstHoldValue.Items.Clear(); 
       for (int i = 0; i <= MAX_ITEMS; i++) 
       { 
        if (i < index) 
        { 
         if (radSorted.Checked == true) 
         { 

          lstHoldValue.Items.Insert(0, "\t" + Convert.ToInt32(lstHoldValue.Items[i]));//show array in a listbox 
          sorted(); 
         } 

        } 

答えて

1

最初のループでこのエラーが発生しているとします。あなたは

lstHoldValue.Items[this.index++] //index is 0 now 

にアクセスしようとしているが、今、あなたはlstHoldValue.Items中には何もありませんが、それでもインデクサを使用してアクセスしてみてください。どのように:

lstHoldValue.Items.Add(dnum); 
index++; 

との重複のために多分使用することが良いアイデアですチェック:

bool isContained lstHoldValue.Items.Contains(possibleDuplicate); //possibleDuplicate is object 

コード

//Get text inside text box 
string textInsideTheTextbox = textBox1.Text; 
//Dummy number 
int dnum; 
//Try parse 
if (int.TryParse(textInsideTheTextbox, out dnum) == false) { /*Can not parse*/return; } 
//Check duplicate 
bool isDuplicate = listBox1.Items.OfType<int>().Contains(dnum); 
//Show message box 
if(isDuplicate) { MessageBox.Show("This number already exists!"); return; } 
if(this.index < MAX_ITEMS) { 
    //...... 
    //...... 
    //STUFF 
    listBox1.Items.Add(dnum); 
    index++; 
    //...... 
    //...... 
    //STUFF 
} 
+0

のための提案を洙ありがとうございました!あなたは人生の節約になります:) – mojojooooo

+0

しかし、今はその重複をチェックしていません – mojojooooo

+0

私はあなたのコードを完全にチェックしていませんが、重複しているチェックはアイテムを追加する前に起きます。 –

関連する問題