0

私のプログラムには、統計を同時に増やすことができる複数のプレーヤーがいます。

プレイヤー 1 は、staminaTextBox[0] skillTextBox[0] LuckTexBox[0] で表されます。

プレイヤー 2 は、staminaTextBox[1] skillTextBox[1] LuckTexBox[1] で表されます。

IncreaseStatスタミナ、スキル、運など、3 種類のテキストボックス オーバーロードに対処する方法が必要です。

private void StaminaIncBtn_Click(object sender, EventArgs e)
{
    IncreaseStat(staminaText[0]);
}

private void LuckIncBtn_Click(object sender, EventArgs e)
{
    IncreaseStat(luckText[0]);
}

private void IncreaseStat(TextBox statText)
{
    for (int i = 0; i < 5 ; i++)
    {
        statText[i].Text = "Altered";
    }
}

このメソッドは、5 人のプレイヤー全員のステータスを同時に上げるために使用されます。

それらが制御配列でない場合は正常に機能しますが、そうする必要があります。エラーが発生します "Cannot apply indexing with [] to an expression of type 'System.Windows.Forms.TextBox"。メソッドの中で私が言っているという事実に当てはまりますstatText[i]

この問題を回避する方法がわかりません。どんな提案でも大歓迎です。

お時間をいただきありがとうございます。

4

1 に答える 1

2

これで十分でしょうか(必要に応じて自分で変更できますか)?

private void IncreaseStat() {
    foreach (TextBox textBox in this.Controls.OfType<TextBox>().Where(x => x.Name.Contains("stamina") || 
            x.Name.Contains("skill") || 
            x.Name.Contains("Luck"))) {
        textBox.Text = "Altered";
    }
}
于 2012-12-17T21:22:19.340 に答える