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 回答