我创建了一个数独游戏,我有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个按钮,其中一个正确游戏,另一个随机化一个新游戏,另一个显示数独的规则。
答案 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();
}
希望这有帮助。