在 XNA 中紧接着显示列表中的名称
本文关键字:列表 显示 XNA 紧接着 | 更新日期: 2023-09-27 18:36:07
我不太确定如何解释这一点,但希望你明白我的意思。
目前,我正在尝试从数据库中提取所有用户名并放入列表中,并且它有效,然后我尝试提取我放入列表中的所有名称,然后将其显示在屏幕上,但是我无法使其工作。
我已经尝试过使用foreach,但这只在列表中显示姓氏:
foreach (var text in allUsers)
{
message = text.Bruger.ToString();
}
这不是我想要的,我想在彼此之后显示每个名称,所以我尝试了这个:
foreach (var text in allUsers)
{
message += text.Bruger.ToString() + ''n';
}
但这只是一遍又一遍地显示相同的内容,列表中只有 4 个名称,但它每个名称显示 4 次以上(并且继续)。
然后我尝试制作一个设置为 false 的布尔值,这样当"For"循环运行两次时,它会将布尔值设置为 false,这将停止循环。但是,这确实会停止循环,但是在每次显示所有名称至少 5 次后它会停止循环(名称从屏幕上用完,所以我只能计算每个名称 5 次)。
该代码如下所示:
bool isDoneAdding = false;
if (isDoneAdding == false)
{
for (int i = 0; i < 2; i++)
{
foreach (var text in allUsers)
{
message += text.Bruger.ToString() + ''n';
}
if (i == 2)
{
isDoneAdding = true;
}
}
}
这个问题的答案可能很容易,但我仍然是一个新手,我一生都无法弄清楚这一点。
提前谢谢。
编辑
这是我将所有用户添加到列表中的地方:
List<User> allUsers = new List<User>();
MathAndYouDBEntities db = new MathAndYouDBEntities();
foreach (User user in db.Users)
{
allUsers.Add(user);
}
从您的问题文本中,我了解到所有用户的内容是正确的(即 4 个项目),并且 foreach 循环被执行了很多次。
此外,您对布尔值的尝试不起作用,因为它永远不会进入 isDoneAdding = true;
语句,因为 for 循环是在 i = 0 和 i = 1 的情况下执行的,并且将在 i 到达值 2 之前退出。即使该语句将被执行(例如将条件设置为 i == 1),foreach 也会执行两次,而不仅仅是一次。
要使用布尔值,您应该执行以下操作:
bool isDoneAdding = false;
if (!isDoneAdding)
{
foreach (var text in allUsers)
{
message += text.Bruger.ToString() + ''n';
}
}
else
{
isDoneAdding = true;
}
但是如果你说 foreach 被执行了 4 次,我认为这行不通。我不知道您的问题的上下文,但假设您的代码是为了响应事件而执行的,并且该事件被多次触发。然后你可能有一个消息变量,它是在包含for循环的方法(也许是一个实例变量?)之外定义的,并且只初始化一次。如果是这种情况,您应该在定义消息的同一位置定义 isDoneAddition。