2010-03-06 3 views
2

Je suis un débutant en C# et je fais une calculatrice. Mais je veux désactiver le "GO!" bouton quand il n'y a pas de nombre tapé dans textbox1 et une fois que l'utilisateur entre un nombre dans le "GO!" le bouton redevient activé ... comment faire cela en C#? J'ai essayé KeyDown et KeyPress événement comme celui-ci, mais n'a jamais travailléMoniteur de frappe

private void Form1_Load(object sender, EventArgs e) 
    { 

      button15.Enabled = false; 
     button16.Enabled = false;  

    } 


private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyEventArgs e) 
    { 

     if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9) 
     { 
      button15.Enabled = true; 
      button16.Enabled = true; 

     } 
     else 
     { 
      button15.Enabled = false; 
      button16.Enabled = false; 
     } 

    } 

alors comment faire s'il vous plaît? merci d'avance.

Répondre

3
private void textBox1_TextChanged(object sender, EventArgs e) 
{ 
     if(String.IsNullOrEmpty(textBox1.Text)) 
     { 
      button15.Enabled = false; 
      button16.Enabled = false; 
     } 
     else 
     { 
      button15.Enabled = true; 
      button16.Enabled = true; 
     } 
} 
+0

mmmmmm, je ne fonctionne pas non plus, les boutons sont toujours activés, j'ai essayé de les désactiver dans le formulaire1_load mais ils sont désactivés de façon permanente! – rafael

+0

Avez-vous ajouté cet événement à l'événement TextChanged de textBox1 dans le concepteur? Vous devez le faire pour le faire fonctionner, vous ne pouvez pas simplement le copier-coller. – Phoexo

+0

Désolé je ne peux pas comprendre, je l'ai mis dans le fichier form1.cs, où devrais-je le mettre? – rafael

7

Votre idée est plutôt bonne, mais il existe une meilleure solution. Il suffit de détecter lorsque le contenu de la zone de texte change. Lorsque le contenu change, vérifiez si le contenu est vide ou non vide. Si le contenu est vide, désactivez le bouton, sinon activez-le.

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged.aspx

En outre, ce serait une bonne idée pour vous de changer les noms de vos commandes à autre chose que les paramètres par défaut. "button15" ne dit rien au lecteur, "goButton" le fait.

1

Comment utiliser l'événement TextChanged, puis vérifier si la zone de texte est vide ou contient quelque chose et activer ou désactiver le bouton en conséquence? En outre, si vous utilisiez WPF, vous pouviez écrire une commande pour votre bouton GO qui gérerait automagiquement l'activation et la désactivation de la commande (et des contrôles qui y sont abonnés). Votre logique d'activation serait simplement de vérifier s'il y a du texte dans la zone de texte.

3

Vous devez vérifier si la valeur de la zone de texte peut réellement être convertie en nombre. La vérification des chiffres n'est pas assez bonne, vous accepterez quelque chose de mauvais comme "4-" ou rejetez quelque chose de bon comme "1e3". Et veuillez utiliser des noms de contrôle significatifs pour ne pas activer accidentellement le mauvais contrôle. Par exemple:

private void txtOperand_TextChanged(object sender, EventArgs e) { 
    double value; 
    btnGo.Enabled = double.TryParse(txtOperand.Text, out value); 
} 

Ce n'est probablement pas assez bon pour votre calculatrice, mais montre l'approche.