2013-05-11 5 views
5

Gibt es neben der button1.Enabled = false; eine andere Möglichkeit, den Benutzer davon abzuhalten, darauf zu klicken?Deaktivieren einer Schaltfläche in C# OHNE Einstellung von btn.Enabled = false ;?

Ich implementiere ein einfaches TicTacToe-Spiel in WinForms und wenn ich die Enabled-Eigenschaft verwende, werden die Farben des Buttons grau, was meine Benutzeroberfläche stark ruiniert.

Ich möchte meine Formatierung für die Schaltfläche behalten und nur weitere Klicken vom Benutzer deaktivieren.

+2

Ihre Klickmethode konnte bedingt nichts tun, wenn sie geklickt wurde. –

+0

Das Hinzufügen des wesentlichen Teils Ihres Codes könnte helfen. –

+2

Möchten Sie wirklich ein Klick-Visual verhindern oder einfach jede Interaktion vermeiden, sobald der Benutzer klickt? Wenn es der zweite ist, können Sie einfach einen booleschen Wert setzen und einfach sofort zurückkehren, wenn Sie es brauchen. –

Antwort

5

Der wahrscheinlich einfachste Weg ist, den Event-Handler nach dem Aufruf abzutrennen.

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

    // Handle the click 
} 
+0

Danke, das war wirklich die einfachste Lösung unter den anderen. –

0

Sie eine Reihe von booleans für alle Ihre Tasten Beispiel halten

bool [] buttonClicked = new bool [9]; 

dann Sie haben 9 Schaltfläche klicken Event-Handler

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; 
    } 
} 

und nicht in jedem neuen Spiel vergessen, die ButtonClicked zurücksetzen Array-Werte zu false

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

Hoffe, das hilft

0

In jedes Quadrat können Sie ein Etikett und eine Schaltfläche einfügen. Wenn die Schaltfläche gedrückt wird, blendet sie sich selbst (Einstellung Sichtbar auf Falsch) und zeigt die Beschriftung an (erneut durch Festlegen der Eigenschaft Sichtbar). Der Beschriftungstext kann auf O oder X festgelegt werden.

Verwandte Themen