2010-09-22 6 views
0

Il y a une erreur: "Le type en cours d'établissement n'est pas compatible avec la représentation de la valeur de l'étiquette."en utilisant la variable locale dans un autre bouton

string fi = null; 


     public void reading(object sender, EventArgs e) 
    { 
     read_from_folder = folderBrowserDialog1.ShowDialog(); 

     if (read_from_folder == DialogResult.OK) 
     { 
      files_in_folder = Directory.GetFiles(folderBrowserDialog1.SelectedPath); 

      foreach (string fi files_in_folder) 
      { 
       string fi_nam = filese_in_folder.ToString(); 
       ... 
      } 
      } 
     } 



    private void button1_Click(object sender, EventArgs e) 
    { 
       DicomDirectory cop = new DicomDirectory(fi); 
       cop.Load(fi); 
    } 
+0

Si la chaîne "fi" est définie en dehors de la méthode, ce n'est pas une variable locale. Si ces méthodes sont dans la même classe et que "fi" est un membre de la classe, cela devrait fonctionner. – auujay

+1

Il n'est pas clair où fi est défini. Peut-être que vous devriez coller plus de code et plus clair :) –

+0

Publiez un code plus clair et un message d'erreur précis (si vous en avez un). À première vue, vous avez une variable de membre de classe définie comme 'chaîne fi;' mais vous utilisez aussi 'chaîne fi' comme locale dans une boucle' foreach'. Ce local va cacher la variable membre, vous obligeant à vous référer à la variable membre comme 'this.fi' dans la méthode qui offre le nom de la variable concurrente. –

Répondre

1

Je suis d'accord avec Frederik, le fi local cache le membre de niveau classe. Mais vous ne savez pas exactement ce que vous attendez de cette variable dans le gestionnaire de clic sur le bouton. Comme vous faites une boucle, si vous utilisez le membre de classe fi, le dernier fichier sera référencé. Cela n'a probablement pas de sens. Si vous recherchez un match, disons, dans la boucle, et que vous vous arrêtez sur ce match, il vous semblera logique de décompacter le niveau de classe fi, et le code que vous avez fonctionnera. Qu'est-ce que vous essayez précisément de faire avec fi?

En outre, la boucle for vous ne fonctionnera pas comme indiqué ... devrait être:

// Missing the 'in' 
foreach (string fi in files_in_folder) 


* Mise à jour * En réponse à vos changements dans la question, où êtes-vous obtenir cette erreur? Dans l'événement de clic de bouton? Sur quelle ligne? Cela ressemble à une erreur interne personnalisée à l'objet DicomDirectory, quel qu'il soit.

+0

l'erreur -> première ligne dans button1_click – user449921

+0

Qu'est-ce qu'un DicomDirectory? Est-ce une ligne dans votre code, ou un objet tiers? –

0

est déclaré en dehors des fonctions indiquées, donc il devrait avoir une portée de classe et non une portée locale dans une fonction. Cela signifie que vous devriez être capable de l'utiliser dans vos deux fonctions. Cela suppose que les deux fonctions que vous avez montrées sont dans la même classe ("Form1" par exemple).

Vous pouvez publier la déclaration de classe dans laquelle ces fonctions sont également contenues, ce qui vérifiera qu'elles sont dans la même classe.

0

fi ne sera pas local, ça va être global pour cette classe.

Ce que vous avez là fonctionnera.

Questions connexes