2010-05-24 4 views
2

Ceci est censé montrer le gagnant dans l'étiquette du formulaire xWinner mais je ne peux pas le comprendre. xWinnerForm.Show (b1.Text) ;. Je suis nouveau à C# donc pouvez-vous s'il vous plaît expliquer en termes simples merci.ne peut pas convertir à partir de chaîne en system.windows.forms.string iwin32window

 static public bool CheckWinner(Button[] myControls) 
    { 
     bool gameOver = false; 
     for (int i = 0; i < 8; i++) 
     { 
      int a = Winners[i, 0]; 
      int b = Winners[i, 1]; 
      int c = Winners[i, 2]; 

      Button b1 = myControls[a], b2 = myControls[b], b3 = myControls[c]; 
      if (b1.Text == "" || b2.Text == "" || b3.Text == "") 
       continue; 
      if (b1.Text == b2.Text && b2.Text == b3.Text) 
      { 
       gameOver = true; 

       Form xWinnerForm = new xWinnerForm(); 
       xWinnerForm.Show(b1.Text); 


      } 


    public void Show(string text) 
    { 
     this.xWinnerLabel.Text = text; 
     this.Show(); 
    } 

     } 
     return gameOver; 
    } 

Répondre

0

C'est le plus petit changement dont vous avez besoin pour le faire fonctionner:

xWinnerForm xWinnerForm = new xWinnerForm(); 

Bien que je vous suggère quelques changements en plus de cela:

  • Utilisez PascalCase pour les noms de classe , mais utilisez chameau pour le nom de la variable.

XWinnerForm xWinnerForm = new XWinnerForm();

  • Ne surchargez pas Show de cette manière. Au lieu de cela, changez le constructeur de votre formulaire pour accepter les données supplémentaires, ou bien ajoutez un setter à votre formulaire.

XWinnerForm xWinnerForm = new XWinnerForm(b1.Text);

  • Ne pas utiliser des noms comme a, b, c, b1:

XWinnerForm xWinnerForm = new XWinnerForm(labelWinner.Text);

0

Actuellement la variable (xWinnerForm) est entré comme Form et Form a une méthode Show avec une signature différente. Au lieu de cela, dites-lui quel type spécifique de Form il est - un WinnerForm peut-être (votre nom de classe ...). Ou utilisez un nom de méthode différent (Show va causer de la confusion).

0
Form xWinnerForm = new xWinnerForm(); 

Cette ligne est votre problème. Parce que vous déclarez votre variable comme Form, le compilateur ne connaît pas votre fonction Show(string). En outre, il est généralement mauvais d'utiliser un nom de variable identique à son type.

Au lieu de cela, faire quelque chose comme ceci:

xWinnerForm winner = new xWinnerForm(); 

winner.Show(b1.Text); 
Questions connexes