2011-11-19 4 views
0

카드 게임을 개발 중입니다. PictureBox 클래스로 카드를 나타 냈습니다. 나는 선수들이 카드를 하나씩 다른 카드 위에 놓는 게임을 가지고있다. 모든 카드의 Z-지수는 다르며 카드가 상단에 넣어 때 나는이 코드로의 최고 Z- 인덱스 제공 :컨트롤의 C# 크로스 스레드 SendToBack/BringToFront 작업

PictureBox cardPictureBox = move.Card.CardPictureBox; 
if (cardPictureBox.InvokeRequired) 
    cardPictureBox.Invoke(new MethodInvoker(cardPictureBox.BringToFront)); 

이 코드는 잘 작동하고 그들이에 가정 할 때 모든 카드는 앞으로하게된다. 이 게임이 끝나면 문제가 생깁니다. 그 때 PictureBox 객체를 원래 위치로 되돌려 놓아야합니다. 나는 그것들을 되돌려 놓았지만 이제는 Designer에서 주문한대로 주문하지 않습니다. Z- 색인을 재정렬해야합니다. 나는 같은 코드를 사용하지만, 모든 카드에 대해 똑같은 일을 반복합니다.

프로그램에서 예외가 발생하지 않지만 멈추고 그게 전부입니다!?!?! 누군가이 문제가 발생 했습니까? 답변에 ​​답변이 있습니까?

내 프로그램이 멈추지 않고 PictureBox z- 인덱스의 안전한 크로스 스레드 변경을 어떻게 만들 수 있습니까? 사전에

덕분에

+0

가 대신 호출의 BeginInvoke를 사용해야합니다. – Yaur

답변

0

가장 간단한 방법은 당신이 마지막에 루프에 그들 모두를하고있는 경우 호출을 생략하는 것입니다 :

foreach (CardPictureBox cardPB in Collection) 
{ 
    cardPB.BringToFront(); 
} 
관련 문제