2016-10-08 7 views
0

私のプロジェクトでは、クリック可能なタイルをグリッドのように作成する必要があります。これを行うには、ラベルの配列を使用して、そのいずれかをクリックすると、クリックされたラベルに対応するマウスクリックイベントが発生することになりました。 Visual Studioのドラッグ&ドロップラベルを使用して220を描画したくないので、ラベルの配列を作成することにしました。ここで私は、ラベルのアレイの使用をテストするために使用していたコードは次のとおりです。Cでラベル配列を描画する

Label[] Tiles = new Label[10]; 
for (int i = 0; i != 10; i++) 
{ 
    for (int n = 0; n != 22; n++) 
    { 
     Tiles[i] = new Label(); 
     Tiles[i].Size = new Size(62, 62); 
     Tiles[i].Location = new System.Drawing.Point(n * 62 + 118, 106 + i * 62); 
     Tiles[i].Text = (i+n).ToString(); 
     Tiles[i].Name = (i + n).ToString(); 
     Tiles[i].AutoSize = true; 
     Tiles[i].Click += new System.EventHandler(this.label1_Click); 
    } 
} 

私はForm1_Load方法では、このコードを使用していますが、問題は、それがエラーをスローしないことですが、またしません実際にフォーム上のラベルを取得し、ラベルを初期化しますが、ラベルを描画しません。フォームに実際にラベルを追加する方法を知っていますか?

答えて

1

これは本当に簡単です!ループのためのあなたの最も内側に

、次の行を追加します。これは、最初のフォーム上のすべてのコントロールを取得します

this.Controls.Add(Tiles[i]); 

、それにラベルを追加!

グリッドを作成しているので、Panelを使用してラベルをまとめてグループ化する必要があるため、Panelにラベルを追加することをおすすめします。

、デザイナのパネルを作成labelPanelまたは何でもそれを呼び出すと、ループの最も内側に、代わりにこのメソッドを呼び出します。

this.labelPanel.Controls.Add(Tiles[i]); 

ラベルの位置が今のパネルに対して相対的であることに注意してくださいそれらを再度調整する必要があります。

+0

助けてくれてありがとう:)私の人生をJavaからC# – Taka

0

フォームにそのラベルを追加する必要があります。あなたのフォームにグループボックスを1つ入れ、group1という名前を付けました。 は、そのグループにラベルを追加します。 group1.Controls.Add(Tiles [i]);

関連する問題