C# - 使用标签显示剩余的数字

时间:2014-01-06 18:24:44

标签: c# winforms label

我创建了一个数独游戏,我有23个数字,为​​用户提供,他需要解决。 我想知道是否有可能通过Label向用户显示剩下多少个文本框而没有数字。

我通过WinForms创建了游戏,而且我几乎已经掌握了。如果有人能把我推向正确的方向,我将不胜感激!

我创建了文本框并使用了数组,然后我随机化了一个完成的数独。随机数发生器本身就是一个完整的类,之后我几乎分配了数组

private void assign_Char_Value(string[] s_Rem_Value)
{
    arr_Char_Value = (s_Rem_Value[0] + s_Rem_Value[1] + s_Rem_Value[2] 
        + s_Rem_Value[3] + s_Rem_Value[4] + s_Rem_Value[5] + s_Rem_Value[6] 
        + s_Rem_Value[7] + s_Rem_Value[8]).ToCharArray();
    int i_Cnt = 0;
    foreach (TextBox[] arr_txtBox in validate.arr_txtBox_Horiz)
    {
        foreach (TextBox txtBox in arr_txtBox)
        {
            txtBox.Text = arr_Char_Value[i_Cnt].ToString();
            i_Cnt++;
        }
    }
    Rondomize_Numbers();
}

之后我选择int number = 23;

我有3个按钮,其中一个正确游戏,另一个随机化一个新游戏,另一个显示数独的规则。

1 个答案:

答案 0 :(得分:4)

为简单起见,我们假设您在面板中拥有所有文本框。 并且文本框是面板中的唯一项目。

现在将您的文本框连接到相同的textBox_TextChanged事件,如下所示:

public Form1()
{
    InitializeComponent();
    foreach (TextBox txtBox in panel1.Controls)
    {
        txtBox.TextChanged += textBox_TextChanged;
    }
}

现在为活动:

private void textBox_TextChanged(object sender, EventArgs e)
{
    var emptyCounter = 0;
    foreach (TextBox txtBox in panel1.Controls)
    {
        if (String.IsNullOrWhiteSpace(txtBox.Text))
        {
            emptyCounter++;
        }
    }

    label1.Text = emptyCounter.ToString();
}

您也可以使用LINQ语句而不是上面的foreach,使方法看起来像这样:

private void textBox_TextChanged(object sender, EventArgs e)
{
    var emptyCounter = panel1.Controls.OfType<TextBox>().Count(txtBox => String.IsNullOrWhiteSpace(txtBox.Text));

    label1.Text = emptyCounter.ToString();
}

希望这有帮助。