2

船がラベル配列のパネルに隠されている海戦ゲームを作成しています。このラベル配列は、選択した難易度に応じて、行と列の数を増減する必要があります。

そこで、Panel とラベル配列を定義する新しいクラス「Gameboard」を作成しました。問題は、このクラスで作成したパネルをフォームにバインドする方法がわからないことです..

namespace SO_S2_Programmeren_Groep08 {
class GameBoard{

Panel pnlSlagveld;
private Label[,] lblArray;
private int row;
private int column;    

public Label[,] LblArray {
  get { 
    return lblArray; 
  }
  set { 
    lblArray = value; 
  }
}

public int Row {
  get { return row; }
  set { row = value; }
}

public int Column {
  get { return column; }
  set { column = value; }
}

public GameBoard(int row, int column) {
  this.row = row;
  this.column = column;
  CreateLableArray(row, column);
}

public GameBoard() {
  this.row = 7;
  this.column = 9;
  CreateLableArray(row, column);
}

private void CreateLableArray(int ingrow, int ingcolumn) {
  pnlBattleField = new System.Windows.Forms.Panel();
  lblArray = new Label[ingrow, ingcolumn];
  int xpos = 0;
  int ypos = 0;

  for (int row = 0; row < ingrow; row++) {

    for (int column = 0; column < ingcolumn; column++) {
      lblArray[row, column] = new Label();
      lblArray[row, column].Left = xpos;
      lblArray[row, column].Top = ypos;
      lblArray[row, column].Width = 50;
      lblArray[row, column].Height = 50;

      lblArray[row, column].Tag = (char)('A' + column) + (row + 1).ToString();
      lblArray[row, column].Click += lblArray_Click;
      lblArray[row, column].BackColor = Color.Aqua;
      lblArray[row, column].BorderStyle = BorderStyle.FixedSingle;

      pnlBattlefield.Controls.Add(lblArray[row, column]);

      xpos += lblArray[row, column].Width;
    }
    ypos += lblArray[row, 0].Width;
    xpos = 0;
  }
}/*CreateLableArray*/

private void lblArray_Click(object sender, EventArgs e) {
  MessageBox.Show("Clicked on Label " + ((Label)sender).Tag.ToString());
}

}

}

もっとクラスを見たい場合は、お問い合わせください!

ありがとう!

4

1 に答える 1

0

次のいずれかを実行できます。

  1. 「GameBoard」をフォームにして、そのフォームにパネルを追加します。これを行いたい場合は、Windows フォーム プロジェクトを作成し (まだ作成していない場合)、このコードをメイン フォーム (または追加する新しいフォーム) のコードに追加して、デザイナー コンポーネントとフォームのすべての Visual Studio 機能。

  2. それをユーザーコントロールにして、そのユーザーコントロールをフォームに追加します。これを行いたい場合は、新しいユーザー コントロールをプロジェクトに追加し、このコードをそのユーザー コントロールに再度追加して、Visual Studio のサポートを取得します。

  3. ゲームボードの内部を作成し、new Form()それに追加します。(これは winforms の標準的なフォーム プラクティスに反しており、IDE のヘルプがあまり得られないため、新しいプログラマーにはお勧めしません)。

于 2012-04-19T14:10:24.623 に答える