C#从其他表单填充dataGrid

时间:2014-04-18 11:31:28

标签: c#

我想将填写表格中的数据添加到包含我的DataGridView的另一个表单中。问题是他们没有看到对方。我尝试制作这些数据字段(文本框和组合框)的结构,并创建一个静态列表,我希望在表格中使用另一种形式。但它仍然无法奏效。 我有一张表格雕像和一张表格。我试过了

foreach('struct i made in both forms' rs in 'Statue.that static list')
{
-fill table-
} 

但它显示错误"无法将类型Statue.registeStruct转换为Table.registreStruct"。你能帮帮我吗? 感谢

2 个答案:

答案 0 :(得分:0)

使用鼠标在Visual Studio中选择您的组件(我的意思是dataGrid)。然后转到属性列表,并将“Modifiers”行从private更改为public。不是您可以从其他表单访问该dataGrid。

答案 1 :(得分:0)

假设您正在使用Windows Forms

您想使用DataBinding

我坚定地建议您每BindingSource有一个DataGridView,然后公开其DataSource属性,以便在两者之间共享相同的来源。

public class Form1 : Form {
    public IList<MyObjectType> DataContext {
        get { return (IList<MyObjectType>)myBindingSource.DataSource; }
        set { myBindingSource.DataSource = value; }
    }
}

public class Form2 : Form {
    public IList<MyObjectType> DataContext {
        get { return (IList<MyObjectType>)myBindingSource.DataSource; }
        set { myBindingSource.DataSource = value; }
    }
}

然后,在另一种形式中,您将能够在两者之间共享信息。

public class Form3 : Form {
    private void onWhateverEventItMIghtBe(object sender, EventArgs e) {
        instanceOfForm2.DataContext = instnceOfForm1.DataContext;
    }
}

您确实需要在设计器模式下设置数据绑定。

使用向导将BindingSource.DataSource中的PropertyWindow属性设置为新的DataSource,以便DataGridView将列设置为您想要的列。然后,将DataGridView.DataSource属性设置为BindingSource