2014-11-04 1 views
-1

나는 Tic Tac Toe 게임을 만들었으며 몇 가지 기능을 추가하려고합니다. 내가버튼을 통한 제어 입력

button.enabled=false; 

문제점으로 촬영 버튼을 처리하는 데 사용 된 버튼의 텍스트가 회색으로한다는 것입니다.

그래서 나는 각 버튼의 버튼 클릭했다 : A1_Click, A2_Click 등

이 A1_click에 내 코드이며, 다른 버튼에 대한 동일합니다에를 변경하는 유일한 방법은 "A1입니다 나는 이미 이전에 클릭 한 버튼을 클릭 유효한 입력이 "나는 단지 또 다른 버튼을 클릭 할 수 있도록하고 싶습니다 없습니다"내가 할, 그래서

 Button b = (Button)sender;    

     if (!A1.Text.Equals("")) 
     {     
      MessageBox.Show("Not A Valid Input"); 

     } 

에 "", "A2. 이미 촬영 한 버튼을 클릭하면 내 방향을 잃고 싶지 않습니다.

+1

'string ctrlName = ((Button) sender) .Name;'및'ctrlName = "A1";'을 제거하고'if' 문을' if (! b.Text.Equals ("")) ... ' – Sjips

+0

이것은 단지 이름 일뿐입니다. A1과 b는 같은 값을가집니다. 여전히 문제가 있습니다 –

+0

클릭하면 'A1.Text'는 무엇입니까? 예를 들어, messageBox.show :'MessageBox.Show ("Button.Text is"+ b.Text + ". 유효한 입력이 아님)에 디버깅 용으로 표시하십시오."); – Sjips

답변

1

내가 읽은 바를 토대로 당신이 찾고있는 것을 알고 있다고 생각합니다. 이미 수행 된 단추를 클릭 할 때 사용자가 차례를 잃도록 강제하는 방법을 찾고 있으며 enabled 속성을 false로 설정하지 않으려합니다. 그것이 당신이 원하는 것이라면, 나는 도움이 될만한 코드를 가지고있을 것입니다. 서로 다른 기능을 가진 여러 버튼에 같은 ​​클릭 이벤트를 할당하는 첫 번째 경우는 다음과 같이 시도해야합니다 :

for (int i = 1; i < 10; i++) 
{ 
    string currentButtonName = "A" + i; 
    Control currentButton = this.Controls.Find(currentButtonName, true).FirstOrDefault(); 
    currentButton.Click += OnGameButton_Click; 
} 

이것이 지정된 이름을 가진 제어를위한 양식을 검색하는 일을하고, 당신의 단추입니다 우리가 그들을 쉽게 찾을 수있는 유사한 이름을가집니다. 그런 다음 모든 함수에 특정 함수를 바인딩하여 수정할 수있는 9 개의 함수 대신 1 개만 수정할 수 있으며 모든 함수가 동일하게 작동하는지 확인할 수 있습니다. 일부 플래그 볼 수 있듯이

private void OnGameButton_Click(object sender, EventArgs e) 
{ 
    if (!hasGameStarted || shouldLoseTurn) 
     return; 

    // This is the current button user pressed 
    Button b = (sender as Button); 

    if (b.Name.Contains('A') && b.Enabled) 
    { 
     if (!b.Text.Equals("")) 
     { 
      MessageBox.Show("Not A Valid Input! You have lost your turn."); 
      shouldLoseTurn = true; 
     } 
     else 
     { 
      b.Text = currentPlayersLetter; 
      shouldLoseTurn = false; 
     } 
    } 
} 

우리가 게임을 모니터링하고 그에 따라 반응 함수의 시작 부분을 살펴보고 버튼을 강제 할 수 있습니다 : 여기 OnGameButton_Click() 이벤트 코드입니다. 게임이 종사하고 현재 사용자가 같은 버튼을 눌러 차례를 잃지 않았 음을 확인해야합니다. 거기에서 우리는 당신이 가지고있는 것을 수정할 필요가 있습니다. 그래서 그들이 동일한 버튼을 두 번 누른다면 필요에 따라 shouldLoseTurn 플래그를 수정합니다.

다른 방법은 버튼을 사용하지 못하도록 Button.Enabled 속성을 사용하는 것입니다. 나는 버튼이 회색으로 표시되지 않는 것을 알고 있지만 버튼에 대한 스타일 가이드를 직접 만들면 원하는대로 만들 수 있습니다. 이를 위해서는 버튼의 기본 스타일 템플릿을 수정해야하기 때문에 어려울 수 있습니다. 여기에 또 다른 질문이있다. here

+0

질문이 분명하지 않아서 용서해 주시고 답변 해 주셔서 감사합니다. –