Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 从另一个表单页面刷新表单页面的方法?_Winforms - Fatal编程技术网

Winforms 从另一个表单页面刷新表单页面的方法?

Winforms 从另一个表单页面刷新表单页面的方法?,winforms,Winforms,我有一个Win form应用程序(VS 2010/C#),我正在尝试找出如何在没有刷新按钮的情况下刷新页面。目前,我可以使用包含以下代码的刷新按钮刷新页面(基本上是重置数据绑定)(this.refresh()由于某种原因似乎不起作用): 我举的一个例子是一个有很多设置的页面,包括带有CellClick事件的数据网格。单击单元格时,可以对数据库进行更改。我点击“关闭”返回“设置”页面,但查看更改的唯一方法是通过按钮刷新()页面 简而言之,有没有办法从另一个表单页面刷新表单页面? 例如,当我单击“保

我有一个Win form应用程序(VS 2010/C#),我正在尝试找出如何在没有刷新按钮的情况下刷新页面。目前,我可以使用包含以下代码的刷新按钮刷新页面(基本上是重置数据绑定)(this.refresh()由于某种原因似乎不起作用):

我举的一个例子是一个有很多设置的页面,包括带有CellClick事件的数据网格。单击单元格时,可以对数据库进行更改。我点击“关闭”返回“设置”页面,但查看更改的唯一方法是通过按钮刷新()页面

简而言之,有没有办法从另一个表单页面刷新表单页面?
例如,当我单击“保存”按钮或关闭子窗口时。

winform控件上的“刷新”会重新绘制控件本身。我发现创建一个方法非常有用,该方法只需使用适当的数据加载控件,然后根据需要调用它。(包括模板荷载)

如果将要关闭的窗体显示为对话框,也可以利用该对话框,并检查对话框的状态,而不仅仅是打开对话框

Form2 dlg = new Form2();
if (dlg.ShowDialog == System.Windows.Forms.DialogResult.OK) {
    //code that updates your data
    ResetData();
}
如果它不是一个对话框,那么您可以做一些事情,并且应用程序的工作方式将使一种方法比其他方法更好。这里只是一个例子

如果您的更改不需要从另一个窗口访问数据来进行更新,则可以处理所创建表单的关闭事件

创建一个类级变量以保存打开的表单,以便还可以删除创建的事件处理程序:

private Form2 frm;
要创建表单实例并添加关闭事件处理程序,请执行以下操作:

    frm = new Form2();
    frm.FormClosed += OnForm2Closed;  
事件处理程序方法:

private void OnForm2Closed(object sender, FormClosedEventArgs e)
{
    ResetData();
    frm.FormClosed -= OnForm2Closed;
}

可以将原始形式作为参数传递给第二种形式:

Form2 frm2 = new Form2(this);
表格2:

Form1 frm1;
public Form2(Form1 frm1)
{
    InitializeComponent();
    this.frm1 = frm1;
}
frm1.Update();
然后在表格2中:

Form1 frm1;
public Form2(Form1 frm1)
{
    InitializeComponent();
    this.frm1 = frm1;
}
frm1.Update();

您必须更新绑定源。网格将从此更新自身。