2010-03-02 6 views
2

Je suis nouveau à Visual Studio C#. Je reçois l'erreur suivante en permanence lorsque j'utilise quelques-unes des méthodes System.Windows.FormsNe contient pas une définition pour "foo"

System.Windows.Forms.DataGridView ne contient pas une définition pour « foo » et aucune méthode d'extension « foo «Intercepter un premier argument de type System.Windows.Forms.DataGridView n'a pu être trouvée

Mon code suivant:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
      int i; 
      i = dataGridView1.CurrentRow.Index 
      textBox2.Text = dataGridView1.Item(2, i).Value 
    } 

Comme je l'ai dit, je l'ai vu plus d'une fois ce genre d'erreur, mais quelle est la raison pour laquelle il est ocur sonner ici? Merci

/EDIT: selon la demande J'ajoute l'ensemble du projet:

using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 

namespace WindowsFormsApplication3 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      //.Designer 
     dataGridView1.AllowUserToAddRows = false; 
     dataGridView1.Dock = DockStyle.None; 

     PopulateDataGridView(); 
     } 
     public void PopulateDataGridView() 
     { 
      dataGridView1.ColumnCount = 3; 
      dataGridView1.Columns[0].Name = "ID"; 
      dataGridView1.Columns[1].Name = "Nombre"; 
      dataGridView1.Columns[2].Name = "Valor"; 
      dataGridView1.Columns["ID"].HeaderText = "ID"; 
      dataGridView1.Columns["Nombre"].HeaderText = "Nombre"; 
      dataGridView1.Columns["Valor"].HeaderText = "Valor"; 

      //DataGridView. 
      dataGridView1.Rows.Add(new string[] { "1", "Nachos", "3.00" }); 
      dataGridView1.Rows.Add(new string[] { "2", "Pelukas", "5.70" }); 
      dataGridView1.Rows.Add(new string[] { "3", "Fresas", "3.50" }); 
      dataGridView1.Rows.Add(new string[] { "4", "Mineral", "5.50" }); 
      dataGridView1.Rows.Add(new string[] { "5", "Mirinda", "7.80" }); 
      dataGridView1.Rows.Add(new string[] { "6", "Jamaica", "2.70" }); 

      // Autosize. 
      dataGridView1.AutoResizeColumns(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      this.AcceptButton = button7; 
      textBox1.Focus(); 
     } 


     [BrowsableAttribute(false)] 
     public DataGridViewRowCollection Rows { get; } 

     private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
     { 
       int i; 
       i = dataGridView1.CurrentRow.Index 
       textBox2.Text = dataGridView1.Item(2, i).Value 
     } 
+2

Vous devez publier le texte * réel * du message d'erreur, non modifié, et pas seulement une partie de celui-ci. Il n'y a pas de "foo" dans votre code source, donc il ne peut pas y avoir de "foo" dans le message d'erreur. – Gabe

+0

ok, le texte actuel contient Item au lieu de foo mais comme je l'ai dit, il arrive à chaque fois. Je pensais qu'un simple foo ferait l'exemple. Je vais continuer à compléter le message d'erreur. – agaragaragar

Répondre

2

Avez-vous essayé ceci:

textBox2.Text = dataGridView1[2, i].Value; 
+0

Je teste cette version que j'écris ces mots textBox2.Text = dataGridView1 [2, i] .Value.ToString(); – agaragaragar

+0

Cela fonctionnait mieux dans ma version précédente 'textBox2.Text = this.dataGridView1.SelectedCells.ToString();' – agaragaragar

2

L'exception indique que vous utilisez une méthode (foo) sur un contrôle qui ne le supporte pas. Pouvez-vous poster le code où cela arrive?

Vous n'avez pas placé de point-virgule à la fin de vos lignes. Ce n'est pas le problème, mais c'est l'un d'entre eux.

devrait se présenter comme suit:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
    int i; 
    i = dataGridView1.CurrentRow.Index; 
    textBox2.Text = dataGridView1.Item(2, i).Value; 
} 

Il y a quelque part un code qui exécute ce que je l'ai mentionné en premier. Le code affiché ci-dessus ne peut pas générer ce message d'exception.

+0

Je viens de le faire. C'est annexé à la question. – agaragaragar

+0

Merci, Kyle. Je vais vérifier à nouveau. – agaragaragar

0

Pensez-y comme ça. Vous avez une classe, disons, "Car" qui émule toutes les fonctionnalités d'une voiture. Ce que cette erreur vous dit, c'est que votre «voiture» ne peut pas effectuer l'action que vous lui demandez d'effectuer. Par exemple, Car.Fly(); Maintenant, comme nous le savons, une voiture ne peut pas (actuellement) voler. Donc le compilateur vous dit que demander à votre voiture de voler n'est pas supporté.

3

Je pense qu'il est cette ligne:

textBox2.Text = dataGridView1.Item(2, i).Value

Je peux voir que le point est une propriété de DataGridView de l'aide de Visual Studio. De plus, il est un indexeur, donc j'attendre que vous avez besoin:

textBox2.Text = dataGridView1.Item[2, i].Value

-à-dire entre parenthèses converties en parenthèses

Avec la parenthèse, il pense que ce doit être une fonction dont vous parlez, mais n'est pas intégré au type, donc il commence à chercher des méthodes d'extension.

+0

En effet, l'erreur est que Item n'est pas un appel de méthode reconnu. – cjk

0

Cela a déjà répondu, mais pour d'autres à venir avec cette erreur, mais pas cette classe spécifique l'OP utilisé ...

je fixe l'erreur par simple nettoyage la solution et la reconstruction.

Questions connexes