0

我在 Windows 窗体中有一个 gridview。我有checkData.csmyNames.cs文件。我划分了一些函数,并将这些函数保存在这些 .cs 文件中。所有文件都有命名空间myNameSpace Program.cs 文件有 gridview。当我尝试从 checkData.cs 访问该 gridview 时,它显示为The data dataGridView1 doesnot exist in the current context. 如何访问网格视图?

在 Program.cs 我有以下代码

namespace myNameSpace
{

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

在 checkData.cs 文件中,我尝试按如下方式访问该 gridview。

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

3 回答 3

0

将 传递DataGridView给另一个类作为参数并存储对它的引用(类在 C# 中是引用类型,因此非常简单。)

编辑:编码大猩猩的答案表明了这一点。

于 2012-06-18T14:11:56.590 回答
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.
    }

}

我发现扩展方法在分离/重用与特定类相关的逻辑方面非常方便。这是文档

于 2012-06-18T14:16:06.397 回答
0

最简单的答案是让你checkData.csmyNames.cs文件中的类DataGridView作为构造函数参数。就像是:

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

   private readonly DataGridView _gridView;
}
于 2012-06-18T14:08:23.297 回答