如何从不同的类中编写DataGridView

时间:2016-10-31 13:20:58

标签: c# winforms datagridview

我有一个Form1,里面有一个DataGridView2。

我想在另一个类(Class1)中使用这个DataGridView,它将在我的DataGridView中插入一些从数据库中获取的数据。 (在这个Class1中我连接到这个数据库)。 我的Class1的代码,用于从数据库中提取数据:

var context = new dbGAPEntities();
BindingSource bi = new BindingSource();
bi.DataSource = context.clienti.ToList();
dataGridView2.DataSource = bi;
dataGridView2.Refresh();

但是我不能这样做,因为在这个类中,我没有dataGridView2。 如何在我的class1中引用Form1中的DataGridView?

我希望我的问题很明确。

我尝试了与此问题相关的其他问题,但我没有任何帮助。

3 个答案:

答案 0 :(得分:1)

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        Class1.BindGridDataSource(this.dataGridView2);
    }
}

public static class Class1
{
    public static void BindGridDataSource(DataGridView grid)
    {
        // Bind grid to data source
    }
}

答案 1 :(得分:1)

一个选项是将DataGridView作为ref参数传递给你。但是我建议密切关注您的架构,不应该在您的数据访问层中引用用户界面(DataGridView)。

GridBind(ref DataGridView1);
GridBind(ref DataGridView2);

你可以执行GridBind方法:

Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("from", "RegisterActivity");
startActivity(intent);

答案 2 :(得分:0)

您可以向类中添加一个填充DataGridView的函数,如下所示:

public void FillDataGridView(DataGridView dgv)
{
    var context = new dbGAPEntities();
    BindingSource bi = new BindingSource();
    bi.DataSource = context.clienti.ToList();
    dgv.DataSource = bi;
    dgv.Refresh();
}

并将其称为:

class1.FillDataGridView(this.DataGridView2);

或者你可以像这样在你的类中添加一个属性:

public BindingSource BindSrc
{
    get
    {
        var context = new dbGAPEntities();
        BindingSource bi = new BindingSource();
        bi.DataSource = context.clienti.ToList();
        return bi;
    }
}

并在您的表格中:

dataGridView2.DataSource = class1.BindSrc;
dataGridView2.Refresh();