2009-12-28 6 views
0

J'ai deux sections (primaire et secondaire) dans un formulaire avec plusieurs zones de texte qui affichent des informations. Dans la section secondaire, j'ai ajouté une case à cocher (qui, lorsqu'elle est cochée), je veux copier les informations des champs de la section primaire dans les champs du côté secondaire. Si elle n'est pas cochée, je veux laisser le champ vide.Comment effectuer une logique différente en fonction de la case à cocher étant vrai ou faux?

Voici quelques exemples de code pour aider à voir ce que je suis en train de faire:

L'événement CheckChanged appelle quatre méthodes différentes (chaque méthode contient une logique pour une case à cocher spécifique):

private void CheckBoxCheckedChanged(
    { 
     Method1(); 
     Method2(); 
     Method3(); 
     Method4(); 
    } 

Lorsque Method4 est appelé je voudrais traiter la logique mentionnée ci-dessus si elle est cochée, et laisser vide si ce n'est pas le cas.

private void Method4() 
    { 
     if (checkBox4.Checked = true) 
     { 
      secondaryTextbox.Text = primaryTextbox.Text; 
     } 
     else if (checkBox4.Checked = false) 
     { 
      secondaryTextbox.Text = ""; 
     } 

    } 

La question que je vais avoir est que quand je fais une fois que la case est cochée, je ne peux plus « décocher » pour modifier le champ de nouveau à être vide.

Qu'est-ce que je fais de mal, ou y a-t-il une meilleure façon de faire?

Je m'excuse à l'avance si j'ai posté ce faux, c'est la première fois que j'utilise SO.

Répondre

4

Le code que vous avez écrit fait une affectation (=) dans l'expression de l'instruction if, mais ce n'est pas ce que vous voulez dire. Vous devriez utiliser == si vous voulez faire une comparaison. Ou encore mieux, faites-le à la place:

if (checkBox4.Checked) 
    { 
     secondaryTextbox.Text = primaryTextbox.Text; 
    } 
    else 
    { 
     secondaryTextbox.Text = ""; 
    } 

Comme l'a souligné Paolo, le code que vous avez essayé donne un avertissement au compilateur. Si vous essayez de ne jamais écrire de code produisant des avertissements, vous pouvez attraper de telles erreurs plus rapidement. Il y a même une option pour traiter les avertissements comme des erreurs que vous pouvez utiliser.

+0

+1. Je pensais que VS vous a donné un avertissement de compilateur sur l'utilisation de = quand vous voulez dire clairement == ...? – Paolo

+0

Oui, en fait, je viens de le vérifier et vous avez raison. –

+0

Merci, j'ai pensé que ce serait quelque chose de simple. Et merci à tous les autres ci-dessous qui ont répondu aussi. – user234702

2

Vous devez

if (checkBox4.Checked == true) 

pour vérifier si cela est vrai, comme vous le faisiez il a toujours été lui attribuant la valeur « true »

0

Vous utilisez un seul « = » pour test de la case à cocher est vérifié. Ceci a pour effet de définir l'état de la case à cocher.

Utilisez "==", comme dans

if (checkBox4.Checked == true) 

ou en fait, beaucoup mieux:

if (checkBox4.Checked) 
+0

Bien qu'en C# l'utilisation de "=" résulte en un avertissement de compilateur. – ChrisF

1

Vous faites affectation lorsque vous parlez à tester

utilisent ce

if (checkBox4.Checked == false) 

ou mieux thi s

if (false == checkBox4.Checked) 

ou encore mieux cette

if (! checkBox4.Checked) 

au lieu de cette

if (checkBox4.Checked = false) 
1

Vous avez un très petit problème dans votre code:

vous utilisez = à la place de ==

aussi il est préférable de définir un tableau de case et zone de texte au lieu de func1, func2, fonc3, FUNC4

Questions connexes