C# 如何在windows窗体中从一个.cs文件访问另一个.cs文件

C# 如何在windows窗体中从一个.cs文件访问另一个.cs文件,c#,winforms,C#,Winforms,我在windows窗体中有一个gridview。我有checkData.cs,myNames.cs文件。 我划分了一些函数,并将这些函数保存在这些.cs文件中。 所有文件都有名称空间myNameSpace Program.cs文件具有gridview。当我试图从checkData.cs访问该gridview时,它显示了一个错误,即数据dataGridView1在当前上下文中不存在。 如何访问网格视图 在Program.cs中,我有以下代码 namespace myNameSpace {

我在windows窗体中有一个gridview。我有
checkData.cs
myNames.cs
文件。 我划分了一些函数,并将这些函数保存在这些.cs文件中。 所有文件都有名称空间
myNameSpace
Program.cs文件具有gridview。当我试图从checkData.cs访问该gridview时,它显示了一个错误,即数据dataGridView1在当前上下文中不存在。 如何访问网格视图

在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
}
}

最简单的答案是使
checkData.cs
myNames.cs
文件中的类将
DataGridView
作为构造函数参数。比如:

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

   private readonly DataGridView _gridView;
}

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


编辑:对Gorilla的答案进行编码说明了这一点。

名称空间在这里并不十分重要。我不确定checkData.cs和myNames.cs中的类和/或方法是否是静态的,但您拥有的DataGridView对象作为forms对象的子对象驻留。要访问此对象,必须将其传递到要从中访问它的类或方法中。一种方法是将其传递给构造函数。另一种方法是在类中拥有一个属性。我个人认为,让需要访问该对象的任何方法直接作为参数传入会更有用

或者,如果您所做的操作影响DataGridView的数据,并且您只是试图将逻辑保持在表单本身的外部,那么您可以将逻辑放在扩展方法中,并直接从表单中调用它

从表格内部:

using MyExtensions; 

...

private void MyMethod()
{
    this.DataGridView1.CheckNames();
}
然后使用CheckNames方法(extensions.cs或其他方法)创建一个extensions类:

我发现扩展方法在分离/重用绑定到特定类的逻辑方面非常方便。这是

public static class Extensions
{

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

}