我有一个带有datagridview的表单。
当您从datagridview双击某一行时,将打开另一个表单,这个表单基本上是您可以编辑双击数据的表单。
此“编辑”表单中有3个按钮,删除,更新和返回主表单按钮。
完成此表单上应该执行的操作后,它会关闭。
我的问题是;
当这个表单关闭时,我希望刷新主表单中datagridview内部的数据,如何从编辑表单中调用主表单上的该函数。
请记住,我已经有了重装功能,假设它叫做refreshData();.
答案 0 :(得分:2)
如果你打开编辑窗体作为模态窗口,ShowDialog()调用是阻塞的,所以如果你之后放置了refreshData调用,它将在编辑窗体关闭后执行:
var editForm = new EditForm(...);
var result = editForm.ShowDialog();
if (result == DialogResult.OK)
{
refreshData();
}
答案 1 :(得分:1)
我认为这会奏效:
向AnotherForm添加DatagridviewForm类型的DatagridviewForm属性(您可能还有其他名称/类型)。在您调用anotherForm.ShowDialog的部分中,添加以下代码:
anotherForm = new AnotherForm();
anotherForm.DatagridviewForm = this;
anotherForm.ShowDialog();
anotherForm.Dispose();
在AnotherForm的关闭处理程序中,更新或刷新数据:
private void AnotherForm_FormClosed(object sender, FormClosedEventArgs e)
{
DatagridviewForm.refreshData();
}
答案 2 :(得分:1)
如果你使用.ShowDialog(),那么只需将刷新函数放在这行代码下。
该程序将继续
private void cell1_DoubleClick(object sender, System.EventArgs e)
功能
所以你的代码看起来就像这样;
private void cell1_DoubleClick(object sender, System.EventArgs e)
{
//Your previous code ....
//The part where you open the EditForm
MyEditForm.ShowDialog();
//After it has been closed the program will continue to execute this function(if it has not been ended yet)
RefreshData();
//Since this function is running from your main form, the function RefreshData() will be executed on your main form aswell
}
根本不需要检查一些对话框结果。
答案 3 :(得分:0)
您可以在表单关闭时访问数据
Form MyEditForm;
private void cell1_DoubleClick(object sender, System.EventArgs e)
{
if (MyEditForm==null)
{
MyEditForm=new MyEditForm();
MyEditForm.FormClosing += refreshData;
}
MyEditForm.ShowDialog();
}
private void refreshData(object sender, EventArgs e)
{
var myDataObj=MyEditForm.getData();
}