-5

簡単なチックタックトーゲームを作りました。と の 2 つのフォームがForm1ありfrmStatsます。私frmStatsには Label がありlblDrawます。プレイヤーが引き分けになると、ラベルが 1 つ増えるようにします。Form1のコードからアクセスするにはどうすればよいですか?

私の Form1 コード:

if (winner != 0)
  this.Text = String.Format("Player {0} Wins!", winner);
else if (winner == 0 && turnCounter == 9)
  this.Text = "Draw!";
 //this is where i want/think the code should be to change the label
else
  ...
4

2 に答える 2

2

まず、ラベルlblDrawを次のように設定します

frmStats形で

 public string strNumber
 {
    get
    {
        return lblDraw.Text;
    }
    set
    {
        lblDraw.Text = value;
    }
 }

フォーム1

    if (winner != 0)
        this.Text = String.Format("Player {0} Wins!", winner);
    else if (winner == 0 && turnCounter == 9)
    {
        this.Text = "Draw!";
        //this is where i want/think the code should be to change the label
        frmStats frm = new frmStats();
        string number = frm.strNumber;
        frm.strNumber = (Convert.ToInt32(number) + 1).ToString(); //incrementing by 1
    }

または、単に LabellblDraw修飾子をpublicに設定しますが、これはお勧めできません。

于 2012-12-22T04:45:22.290 に答える
0

Mr_Green の答えは機能しますが、正しい方法は、Form1 を開いたときに変数として frmStats に渡すことだと思います。

frmStats newForm = new frmStats(this);

数値にアクセスするために Form1 内にプロパティを作成します。

    public int Num
    {
        get
        {
            return myNumber;
        }
    }

次に、frmStats コンストラクターで、親フォームのパブリック プロパティにアクセスできます。

    public frmStats(Form1 form)
    {
        InitializeComponent();

        lblDraw.Text = form.Num.ToString();
    }
于 2012-12-22T04:59:33.207 に答える