2010-03-02 195 views
2

我是Visual Studio C#的新手。我收到以下错误不断时,我使用的是一些在System.Windows.Forms的不包含“foo”的定义

System.Windows.Forms.DataGridView方法不包含“富” 的定义,并没有扩展方法“富“接受一个类型System.Windows.Forms.DataGridView的第一个参数可以发现

我的代码如下:

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

正如我所说的,我已经看到了这种错误不止一次,但是它的原因是什么?在这里响? 感谢

/编辑: 根据要求我加入整个项目:

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

您应该发布错误消息的*实际*文本,而不是修改,而不仅仅是它的一部分。源代码中没有“foo”,所以在错误消息中不能有“foo”。 – Gabe 2010-03-02 07:52:18

+0

好吧,实际的文本包含Item而不是foo,但正如我所说,它每次都会发生。我想到一个简单的foo会做例证。我将继续完成错误消息。 – agaragaragar 2010-03-02 07:58:29

回答

2

你有没有尝试这个办法:

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

我正在测试这个版本,因为我写这些文字 textBox2.Text = dataGridView1 [2,i] .Value.ToString(); – agaragaragar 2010-03-02 08:37:30

+0

它在我以前的版本中效果更好'textBox2.Text = this.dataGridView1.SelectedCells.ToString();' – agaragaragar 2010-03-02 08:43:56

2

的异常状态您使用的是不支持它控制的方法(foo)。你能在这发生的地方发布代码吗?

您没有在行尾放置分号。它不是问题,但它是其中之一。

应该如下:

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

有码的地方,正在执行我的第一次提到。上面发布的代码无法生成该例外消息。

+0

我刚刚做到了。它附在问题上。 – agaragaragar 2010-03-02 07:27:04

+0

谢谢,凯尔。我会再检查一次。 – agaragaragar 2010-03-02 08:07:22

0

想想这样吧。你有一堂课,比如说汽车模拟汽车的所有功能。这个错误告诉你的是你的“汽车”不能执行你要求它执行的动作。例如,Car.Fly();现在,我们知道,一辆汽车不能(当前)飞行。所以编译器告诉你,要求你的汽车飞行不受支持。

3

我会怀疑这是这一行:

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

我可以看到项目是从Visual Studio帮助的DataGridView的财产。此外,这是一个索引,所以我希望你需要:

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

即括号转换为括号

随着括号,就认为它一定是你指的是一个函数,但它不是内置于该类型的,因此它开始寻找扩展方法。

+0

的确,错误是Item不是一个公认的方法调用。 – cjk 2010-03-02 08:24:13

0

这已经回答了,但其他一些与此错误来,但不是这个特定的类中使用的OP ...

我用清洁简单地固定错误解决方案和重建。

相关问题