2010-11-21 2 views
-1

LabelListと宣言しようとしています。 インデックスが範囲外になっています。リスト内でラベルを収集しようとしているときに範囲外にあるインデックス

using System.Windows.Forms; 
using System.Collections.Generic; 

namespace Player_editor 
{ 
partial class Form3 
{ 
    /// <summary> 
    /// Required designer variable. 
    /// </summary> 
    private System.ComponentModel.IContainer components = null; 

    /// <summary> 
    /// Clean up any resources being used. 
    /// </summary> 
    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
    protected override void Dispose(bool disposing) 
    { 
     if (disposing && (components != null)) 
     { 
      components.Dispose(); 
     } 
     base.Dispose(disposing); 
    } 

    #region Windows Form Designer generated code 

    /// <summary> 
    /// Required method for Designer support - do not modify 
    /// the contents of this method with the code editor. 
    /// </summary> 
    private void InitializeComponent() 
    { 
     labels[1] = new System.Windows.Forms.Label(); 
     labels[2] = new System.Windows.Forms.Label(); 
     labels[3] = new System.Windows.Forms.Label(); 
     labels[4] = new System.Windows.Forms.Label(); 
     labels[5] = new System.Windows.Forms.Label(); 
     labels[6] = new System.Windows.Forms.Label(); 
     this.SuspendLayout(); 
     // 
     // label1 
     // 
     labels[1].AutoSize = true; 
     labels[1].Location = new System.Drawing.Point(12, 9); 
     labels[1].Name = "label1"; 
     labels[1].Size = new System.Drawing.Size(35, 13); 
     labels[1].TabIndex = 0; 
     labels[1].Text = "label1"; 
     // 
     // label2 
     // 
     labels[2].AutoSize = true; 
     labels[2].Location = new System.Drawing.Point(53, 9); 
     labels[2].Name = "label2"; 
     labels[2].Size = new System.Drawing.Size(35, 13); 
     labels[2].TabIndex = 1; 
     labels[2].Text = "label2"; 
     // 
     // label3 
     // 
     labels[3].AutoSize = true; 
     labels[3].Location = new System.Drawing.Point(12, 22); 
     labels[3].Name = "label3"; 
     labels[3].Size = new System.Drawing.Size(35, 13); 
     labels[3].TabIndex = 2; 
     labels[3].Text = "label3"; 
     // 
     // label4 
     // 
     labels[4].AutoSize = true; 
     labels[4].Location = new System.Drawing.Point(53, 22); 
     labels[4].Name = "label4"; 
     labels[4].Size = new System.Drawing.Size(35, 13); 
     labels[4].TabIndex = 3; 
     labels[4].Text = "label4"; 
     // 
     // label5 
     // 
     labels[5].AutoSize = true; 
     labels[5].Location = new System.Drawing.Point(12, 35); 
     labels[5].Name = "label5"; 
     labels[5].Size = new System.Drawing.Size(35, 13); 
     labels[5].TabIndex = 4; 
     labels[5].Text = "label5"; 
     // 
     // label6 
     // 
     labels[6].AutoSize = true; 
     labels[6].Location = new System.Drawing.Point(53, 35); 
     labels[6].Name = "label6"; 
     labels[6].Size = new System.Drawing.Size(35, 13); 
     labels[6].TabIndex = 5; 
     labels[6].Text = "label6"; 
     // 
     // Form3 
     // 
     this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.ClientSize = new System.Drawing.Size(239, 464); 
     this.Controls.Add(labels[6]); 
     this.Controls.Add(labels[5]); 
     this.Controls.Add(labels[4]); 
     this.Controls.Add(labels[3]); 
     this.Controls.Add(labels[2]); 
     this.Controls.Add(labels[1]); 
     this.Name = "Form3"; 
     this.Text = "Groups"; 
     this.Load += new System.EventHandler(this.Form3_Load); 
     this.ResumeLayout(false); 
     this.PerformLayout(); 

    } 

    #endregion 

    List<System.Windows.Forms.Label> labels = new List<System.Windows.Forms.Label>(); 
} 
} 
+3

このセクションでは、独自のコードを追加しないでください。それはデザイナーによって自動生成されます。 – BeemerGuy

答えて

0

あなたはAddメソッドを呼び出すことで、リストにラベルを追加する必要があります。ここでは

はコードです。

リストはゼロベースのインデックスを使用することに注意してください。


デザイナーは、すべてのコードを静かに削除します。

代わりに、デザイナーが生成したコードをそのまま残してから、LabelインスタンスをコンストラクターのList<Label>に追加する必要があります。

+0

それは動作します、彼のコードは、次に彼が何かを変更するときに消えます。 – Femaref

0

リストに何かを追加するには、List<T>.Add(T object)メソッドを使用する必要があります。それに加えて、form.designer.csが自動生成されるため、次回デザイナーで何かを変更したときにカスタムコードが消えます。

0

リストがあるときは、Add()メソッドを使用してリストに要素を追加します。リストインデクサー(list [1] = new Label)を使用して要素を追加しようとしているようですが、そのインデックスには要素がありません。

また、索引付けを0(最初の要素は索引0など)に開始するように注意してください。

最後に、デザイナーファイルの編集から離れて、コードを別の場所に置く必要があるという点について私は同意します。

0

Addメソッドを使用する必要があります。さらに、インターフェース "List"ではなく、linkedlistやarraylistのようなListの実装を行う方がよいでしょう。

関連する問題