2012-06-18 45 views
0

我在窗體中有一個gridview。我有checkData.cs,myNames.cs文件。 我劃分了一些功能,並將這些功能保存在這些.cs文件中。 所有文件都有名稱空間myNameSpace Program.cs文件具有gridview。當我試圖從checkData.cs訪問gridview時,它顯示錯誤爲The data dataGridView1 doesnot exist in the current context。 如何訪問網格視圖?如何從一個.cs文件訪問GridView到Windows窗體中的另一個.cs文件

Program.cs中我有以下的checkData.cs代碼

namespace myNameSpace 
{ 

    class Program : System.Windows.Forms.Form 
    { 
    private DataGridView dataGridView1; 
    } 
} 

文件我想如下訪問GridView控件。

namespace myNameSpace 
{ 
public BindToGrid() 
{ 
dataGridView1.dataSource = mySource; //assume that mySource has grid bound data 
} 
} 
+0

在此處張貼一些代碼.. –

回答

0

最簡單的答案就是讓你checkData.csmyNames.cs文件中的類採取DataGridView作爲構造函數的參數。喜歡的東西:

public class CheckData 
{ 
    public CheckData(DataGridView Gridview) 
    { 
     _gridView = GridView; 
    } 

    private readonly DataGridView _gridView; 
} 
0

傳遞DataGridView其他類作爲參數和參考存儲它(類在C#中引用類型,所以這是很簡單的)

編輯:編碼大猩猩的答案顯示它。

0

命名空間在這裏並不重要。我不確定您的checkData.cs和myNames.cs中的類和/或方法是否是靜態的,但您所擁有的DataGridView對象是您窗體對象的子對象。爲了訪問這個對象,它必須被傳入你想要從中訪問它的類或方法。一種方法是將其傳遞給構造函數。另一種方法是在你的班級中擁有一個房產。就我個人而言,我認爲將任何需要訪問此對象的方法作爲參數直接傳入將會更有​​用。另外,如果你在做什麼影響DataGridView的數據,而你只是想讓你的邏輯保持在表單本身的外部,那麼你可以把邏輯放在一個擴展方法中,直接調用它直接從在你的表格內。

從表單中:

using MyExtensions; 

... 

private void MyMethod() 
{ 
    this.DataGridView1.CheckNames(); 
} 

然後創建與CheckNames方法的擴展類(Extensions.cs或東西):

public static class Extensions 
{ 

    public static void CheckNames(this DataGridView source) 
    { 
     // Do your logic here. 
    } 

} 

我發現擴展方法是在分離非常方便/重用與特定類相關的邏輯。這裏是the documentation

相關問題