2016-05-16 5 views
-2
private void Form1_Load(object sender, EventArgs e) 
    { 
     palabras pala = new palabras(); 
     pala.Traelo(); 
     Label[] labels = new Label[pala.cantLetras]; 

    } 
private void MoveteA() 
    { 
     for (int i = 0; i < posActLabelsX.Count; i++) 
     { 
     labels[i].Location=Point(posLabelFormX - posLabelBotonX, posLabelFormY - posLabelBotonY); 
     } 
    } 

を作るためにしかし、それは、それは公共のではない原因私はそれを使用させませんが、私は公共のラベルを置く場合は、[]ラベルは=新しいラベル[pala.cantLetras]。それは私には何が分かっているのかわからないが、プログラム全体が壊れるというエラーが出る。どのようにラベル配列公共

+0

グローバルフィールドにしますか? –

+0

ラベルを公開したときのエラーを表示できますか? – Aimnox

+0

あなたは一般的にそうしてはいけません。ラベルは、フォームの責任であるGUI要素です。そのテキスト情報にアクセスまたは処理するパブリック関数またはメソッドを作成するほうがよいでしょう。あなたがFlowLayoutPanelの動作を模倣しようとしているようです。 – LarsTech

答えて

0

公共の場では、あなたのクラスの外にそれを使用しない場合、あなたはまだプライベートそれを維持することができるかもしれない、しかしそう

public Label[] labels; 
private void Form1_Load(object sender, EventArgs e) 
{ 
    palabras pala = new palabras(); 
    pala.Traelo(); 
    labels = new Label[pala.cantLetras]; 
} 

のようなあなたのクラス内に直接置くことができ、あなたはまだよまた

public Label[] labels {get; private set;} 
    private void Form1_Load(object sender, EventArgs e) 
    { 
     palabras pala = new palabras(); 
     pala.Traelo(); 
     labels = new Label[pala.cantLetras]; 
    } 

あなたはLのために境界:彼らはあなたのクラスの両方が

0

私はパブリック取得プロパティを作成している、そしてこのような民間のセットがあるため、両方の方法でそれを使用することが可能oopによってインデックスが境界外になることがあります。このように修正してください:

for (int i = 0; i < labels.Count; i++) 
関連する問題