2012-06-18 49 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

相关问题