2012-06-04 2 views
2

설명하는 방법에 대해서는 너무 확신이 없지만 잘하면 당신이 의미하는 바를 얻을 수 있습니다.목록의 이름을 XNA에서 바로 표시하기

현재 데이터베이스에서 모든 사용자 이름을 꺼내 목록에 넣으려고하고 있는데 작동하면 나중에 목록에 넣은 모든 이름을 꺼내려고합니다 그러나 화면이 작동하지 않습니다.

나는 foreach는 함께 시도했다, 그러나 이것은 단지 목록의 마지막 이름을 표시 : 내가 원하는 것이 아니다

foreach (var text in allUsers) 
         { 
          message = text.Bruger.ToString(); 
         } 

, 나는 서로 후 각각의 이름을 표시하고 싶었다, 그래서 시도 대신 :

foreach (var text in allUsers) 
         { 
          message += text.Bruger.ToString() + '\n'; 
         } 

그러나 이것은 단지 또 다시 같은 표시 유지는 목록 만 4 이름을 프로그래머,하지만 더 후 4 회 (그리고가는 계속) 각각의 이름을 표시합니다.

그런 다음 "For"루프가 두 번 실행될 때 bool을 false로 설정하여 루프를 중지하도록 false로 설정된 bool을 만들려고했습니다. 그러나 이것은 루프를 멈추지 만 모든 이름을 적어도 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; 
         } 
        } 
       } 

대답은 매우 간단 수 있습니다,하지만 난 여전히 초보자이고 난 내 인생이 알아낼 수 없습니다 :

그 코드는 다음과 같습니다. 사전에

감사합니다.

편집

내가 목록에 모든 사용자를 추가 할 곳은 다음과 같습니다 ALLUSERS의 내용이 올바른지

 List<User> allUsers = new List<User>(); 

MathAndYouDBEntities db = new MathAndYouDBEntities(); 


      foreach (User user in db.Users) 
      { 
       allUsers.Add(user); 

      } 
+0

돌아 오는 'text'변수가 개별 사용자인지 확인하십시오. 'Bruger'는 무엇을 말합니까? 또한 하단 코드 세그먼트는 중간 코드 세그먼트와 동일한 결과를 생성하지만 두 번 수행합니다. 일반적인 for 루프를 사용하는 경우 foreach를 사용하지 않는 것이 좋습니다. –

+0

Bruger는 "User"에 대한 덴마크어 단어입니다. 기본적으로 데이터베이스에서 테이블이 호출되는 곳입니다. 예를 들어 디버그를 확인한 후에 모두 실행 한 다음 마지막으로 가져온 항목을 게시합니다. 그러나 + = 1을 사용하면 멈추지 않고 어떤 이유로 든 모든 것을 계속 추가합니다. – Etarnalazure

+0

나는 allUsers가 사실 데이터베이스의 모든 사용자 컬렉션이 아니라고 생각합니다. 적어도 C# foreach 루프가 반복 할 수있는 형식이 아닙니다. –

답변

2

이해 질문의 텍스트에서 (즉, 4 개 항목) , 그리고 foreach 루프가 여러 번 실행된다는 것입니다.

또한 for 루프는 i = 0 및 i = 1에 대해 실행되고 값 2가되기 전에 종료되므로 isDoneAdding = true; 문을 입력 할 수 없기 때문에 부울을 사용할 수 없습니다. Even 그 명령문이 실행되면 (예를 들어 조건을 i == 1로 설정하는 경우), foreach는 두 번 실행되며 한 번만 수행되지 않습니다.

은이 같은 짓을 했어야 부울 사용하려면

bool isDoneAdding = false; 

if (!isDoneAdding) 
{ 
    foreach (var text in allUsers) 
    { 
     message += text.Bruger.ToString() + '\n'; 
    } 
} 
else 
{ 
    isDoneAdding = true; 
} 

을하지만 당신은 foreach는 4 번 실행되는 것을 말한다면 나는 이것이 작동 할 것이라고 생각하지 않습니다. 문제의 컨텍스트를 알 수는 없지만 코드가 이벤트에 대한 응답으로 실행되고이 이벤트가 여러 번 발생한다고 가정합니다. 그런 다음 아마도 for 루프 (아마도 인스턴스 변수?)를 포함하는 메서드 외부에 정의 된 메시지 변수를 가지게되고 한 번만 초기화됩니다. 이 경우 메시지가 정의 된 동일한 위치에서 isDoneAdding을 정의해야합니다.

+0

방금 ​​시도한 방법을 시도했지만 작동하지 않았습니다. 나는 계속해서 무한 루프를 반복하며, 이름을 계속 추가하고 모든 이름을 가진 화면 위에 매우 빠른 스크롤 텍스트를 다시 만듭니다. – Etarnalazure