C# 如何在windows窗体中从一个.cs文件访问另一个.cs文件
我在windows窗体中有一个gridview。我有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 {
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.
}
}