2013-05-11 10 views
5

Czy jest inny sposób niż button1.Enabled = false;, aby uniemożliwić użytkownikowi kliknięcie?Wyłączanie przycisku w C# BEZ ustawienia btn.Enabled = false ;?

Wprowadzam prostą grę TicTacToe w WinForm i jeśli używam właściwości Enabled, kolory tekstu przycisku zamieniają się w szary, co bardzo mocno niszczy mój interfejs użytkownika.

Chciałbym zachować formatowanie dla przycisku i po prostu wyłączyć dalsze klikanie od użytkownika.

+2

Twoja metoda kliknięcia może warunkowo zdecydować, że nie robi nic po kliknięciu. –

+0

Dodanie niezbędnej części kodu może pomóc. –

+2

Czy naprawdę chcesz zapobiec klikaniu wizualnemu, lub po prostu uniknąć interakcji po kliknięciu przez użytkownika? Jeśli jest to drugie, możesz z łatwością ustawić wartość boolean i natychmiast wrócić, jeśli potrzebujesz. –

Odpowiedz

5

Najprawdopodobniej najprościej jest odłączyć procedurę obsługi zdarzeń po jej wywołaniu.

void HandleClick(object sender, EventArgs e) 
{ 
    ((Button)sender).Click -= HandleClick; 

    // Handle the click 
} 
+0

Dzięki, to było najprostsze rozwiązanie spośród innych. –

0

Można trzymać tablicę wartości logiczne dla wszystkich swoich przykład guziki

bool [] buttonClicked = new bool [9]; 

wtedy masz koparki zdarzeń kliknięcia 9 Przycisk

private void button1_Clicked(object sender, EventArg e) 
{ 
    if(buttonClicked[0]==true) 
     return; 
    else 
    { 
     // your code goes here 
     // mark this button in boolean array as clicked 
     buttonClicked[0] = true; 
    } 
} 

i nie zapomnij w każdej nowej grze, aby zresetować buttonClicked wartości tablicy do fałszywego

for(int i=0;i<9;i++) 
{ 
    buttonClicked[i]=false; 
} 

Hope this helps

0

W każdym kwadracie można umieścić etykietę i przycisk. Po naciśnięciu przycisku ukrywa się (ustawienie Visible to false) i pokazuje etykietę (ponownie ustawiając właściwość Visible). Tekst etykiety można ustawić na O lub X.

Powiązane problemy