2010-03-02 257 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 ...

我用清潔簡單地固定錯誤解決方案和重建。

相關問題