【问题标题】:A way to refresh a form page from another form page?一种从另一个表单页面刷新表单页面的方法?
【发布时间】:2012-01-22 04:35:38
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您必须更新绑定源。网格将从那里更新自己。

标签: winforms


【解决方案1】:

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

Form2 frm2 = new Form2(this);

在 Form2 中:

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

然后在Form2中有:

frm1.Update();

【讨论】:

    【解决方案2】:

    在 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;
    

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

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

    事件处理方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多