不包含“foo”的定义

时间:2010-03-02 06:22:54

标签: c#

我是Visual Studio C#的新手。当我使用System.Windows.Forms

中的一些方法时,我不断收到以下错误
  

System.Windows.Forms.DataGridView不包含'foo'的定义   没有扩展方法'foo'接受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
        }

5 个答案:

答案 0 :(得分:3)

我怀疑是这一行:

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

我可以从Visual Studio帮助中看到Item是DataGridView的属性。此外,它是一个索引器,所以我希望你需要:

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

即。括号转换为括号

使用括号,它认为它必须是您所指的函数,但它不是内置于该类型,因此它开始寻找扩展方法。

答案 1 :(得分:2)

该异常表明您在不支持它的控件上使用方法(foo)。你可以发布代码吗?

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

应如下所示:

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

在某处执行我先提到的代码。上面发布的代码无法生成该异常消息。

答案 2 :(得分:2)

你试过这个:

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

答案 3 :(得分:0)

这样想。你有一个类,比如“Car”,它模仿汽车的所有功能。这个错误告诉你的是你的“Car”无法执行你要求它执行的操作。例如,Car.Fly();现在,正如我们所知,汽车不能(目前)飞行。所以编译器告诉你不要支持你的Car to Fly。

答案 4 :(得分:0)

这已经得到了回答,但是对于其他一些出现此错误的人而言,OP并没有使用这个特定类......

我只是通过清理解决方案并重建来修复错误。