我有这种情况我想在我的dataGridView中同步信息,当我将其插入我的添加表单时,就像你在这张图片上看到的那样。
在插入按钮上的插入表单中,我调用添加表单,以便像这样弹出
private void button1_Click(object sender, EventArgs e)
{
if (addForm==null)
{
addForm = new AddForm();
}
addForm.MdiParent = this.ParentForm;
addForm.FormClosed += AddForm_FormClosed;
addForm.Show();
}
private void AddForm_FormClosed(object sender, FormClosedEventArgs e)
{
addForm = null;
}
在“接受”中的“添加”表单上单击“我插入信息”并从“插入”表单中调用fillDataGrid()方法进行数据同步但未显示任何内容当我关闭“插入”表单并再次调用时,会显示数据是否有人怀疑我该怎么办?这是我第一次与MdiContainer合作?
private void buttonAccept_Click(object sender, EventArgs e)
{
if (validation())
{
Proizvod product = new Proizvod();
product.NazivProizvoda = textBoxName.Text;
product.Opis = textBoxDescription.Text;
product.SerijskiBroj = textBoxNumber.Text;
product.ZemljaPorijekla = textBoxCountry.Text;
if (pDal.insertProduct(product)==0)
{
MessageBox.Show("Informations are successfully inserted","Message");
InsertForm inForm = new InsertForm();
inForm.fillDataGrid();
}
}
}
我的fillDataGrid()方法和InsertForm的Load事件:
public void fillDataGrid()
{
dataGridViewProducts.DataSource = null;
dataGridViewProducts.AutoGenerateColumns = false;
dataGridViewProducts.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
dataGridViewProducts.ColumnCount = 3;
dataGridViewProducts.Columns[0].Name = "Product name";
dataGridViewProducts.Columns[0].DataPropertyName = "NazivProizvoda";
dataGridViewProducts.Columns[1].Name = "Country";
dataGridViewProducts.Columns[1].DataPropertyName = "ZemljaPorijekla";
dataGridViewProducts.Columns[2].Name = "Product number";
dataGridViewProducts.Columns[2].DataPropertyName = "SerijskiBroj";
dataGridViewProducts.DataSource = pDal.getAllProducts();
}
private void InsertForm_Load(object sender, EventArgs e)
{
fillDataGrid();
}
private void InsertForm_Shown(object sender, EventArgs e)
{
dataGridViewProducts.CurrentCell = null;
dataGridViewProducts.ClearSelection();
}
答案 0 :(得分:1)
目前在buttonAccept_Click
代码中,您已创建了列表表单的新实例,并将其称为FillGrid
。这样您就可以操作列表表单的另一个实例,该实例与打开的实例不同,您可以看到。您正在填写一份您未显示的其他表格。
不是创建新实例,而是为第二个表单创建一个构造函数,该构造函数接受第一个表单类型的参数。然后,当您要创建seccod表单的新实例时,将第一个表单(this
)的实例传递给第二个表单。然后在保存按钮中调用传递的实例的FillGrid
方法。
有关如何操纵其他表单的更多信息,请阅读this post。它包含一些有用的选项:
以下是一些属于ListForm
的代码:
private void ShowAddForm_Click(object sender, EventArgs e)
{
if (addForm == null)
{
addForm = new AddForm(this);
addForm.MdiParent = this.ParentForm;
addForm.FormClosed += AddForm_FormClosed;
}
addForm.Show();
}
private void AddForm_FormClosed(object sender, FormClosedEventArgs e)
{
addForm = null;
}
以下是AddForm
public class AddForm
{
MyListForm listForm;
public AddForm(MyListForm f)
{
InitializeComponent();
listForm = f;
}
private void SaveVutton_Click(object sender, EventArgs e)
{
//perform validation and save data
f.FillGrid();
}
}