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

时间:2012-01-22 04:35:38

标签: winforms

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

this.Hide();
AccountSettings AS = new AccountSettings();
AS.ShowDialog();

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

所以缺点是,有没有办法从另一个表单页面刷新表单页面? 例如,当我单击“保存”按钮或关闭子窗口时。

2 个答案:

答案 0 :(得分:3)

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

Form2 frm2 = new Form2(this);

在Form2中:

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

然后在Form2中:

frm1.Update();

答案 1 :(得分:0)

在winform控件上刷新重新绘制控件本身。我发现创建一个只使用正确的数据加载我的控件的方法很有用,然后根据需要调用它。 (包括表格载入)

private void ResetData()
    {
      //code to update settings
    }

如果您正在显示正在关闭的表单作为对话框,您也可以利用它,并检查对话框的状态而不是仅打开它。

Form2 dlg = new Form2();
if (dlg.ShowDialog == System.Windows.Forms.DialogResult.OK) {
    //code that updates your data
    ResetData();
}

如果它不是一个对话框,那么你可以做一些事情,你的应用程序如何工作会使一种方法比其他方法更好。这只是一个例子。

如果您的更改不需要访问其他窗口中的数据进行更新,则可以处理您创建的表单的已关闭事件。

创建一个类级别变量来保存打开的表单,这样您也可以删除您创建的事件处理程序:

private Form2 frm;

创建表单实例,并添加close事件处理程序:

    frm = new Form2();
    frm.FormClosed += OnForm2Closed;  

事件处理程序方法:

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