我有一个函数,它有一个包含n * n个数字的多维数组,以及一个包含我的程序按钮的向量。
现在,我的程序可以随机播放数组中的数字并将每个值分配给一个按钮,每次按下按钮都会“刷新每个按钮的值”。
当我每次“刷新”按钮时,我试图隐藏一个特定的数字(例如,0)时,我现在遇到了问题,但是当我按下按钮时,它似乎没有显示上一个按钮,这导致最终隐藏所有按钮。
这是我现在的代码:
public void Refresh(int NumberToHide)
{
foreach (Button b in buttons)
b.Visibility = Visibility.Visible;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (buttons[(i * 4 + j)].Content.ToString() == NumberToHide.ToString())
{
buttons[(i * 4 + j)].Visibility = Visibility.Hidden;
}
else
{
buttons[(i * 4 + j)].Content = myArray[i, j].ToString();
}
}
}
}
函数开头的foreach不应该使每个按钮都可见吗?
为什么每次调用该函数时,不可见的按钮都不会显示?
感谢您的帮助!
答案 0 :(得分:1)
问题似乎来自于 隐藏元素或分配Content
的事实。由于您的可见性检查基于该内容,因此以前不可见的元素不会更改。我无法重现它,因为您的许多代码都缺失了,但根据您的描述,我会检查新内容而不是当前:
public void Refresh(int numberToHide)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
var button = buttons[i * 4 + j];
button.Content = myArray[i, j];
button.Visibility = myArray[i, j] == numberToHide ?
Visibility.Hidden : Visibility.Visible;
}
}
}