【问题标题】:winform - refresh the other form while refreshing the initialwinform - 在刷新初始表单的同时刷新另一个表单
【发布时间】:2017-06-03 13:57:20
【问题描述】:

您好,我有form1form2

private void form1_Load(object sender, EventArgs e)
{
//codes to display db
}

然后我使用form2.ShowDialog(); 打开表单,因为我不想要多个窗口

然后在我的 form2 中我必须删除一些东西,所以 form1 必须更新显示。

 private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//codes to delete
  form2_Load(sender, e); //so the form2 will reload
}

首先我必须先打开form1,然后才能打开form2。我如何更新/刷新form1,同时仍处于 form2 中? 编辑:
我唯一想在form1 中刷新的是dataGridView

【问题讨论】:

  • 不打开form1是否可以打开form2
  • 顺便说一句,不要直接调用form2_Load(sender, e) 之类的事件处理程序。你应该把这些东西写在一个函数中,然后在form2_LoaddataGridView1_CellContentClick中调用那个函数
  • @un-lucky 没有。 form1 必须先打开。
  • 不要考虑刷新控件:刷新数据源。然后,如果他们使用相同的数据源,则无需刷新

标签: c# winforms


【解决方案1】:

这个问题取决于form2知道如何访问form1吗?

如果是这样,您可以调用form1.Refresh()(或其他一些公共方法)要求form1 更新列表。 (当然,你必须重写Refresh 方法,或者创建你自己的公共方法)。

如果没有,也许你可以考虑使用Singleton pattern on your form1

--

另外,如果form2总是由form1创建,可以考虑这样打开form2(一定要写form1

Form2 form2 = new Form2();
form2.Open(this);
//-- or
form2.OpenDialog(this);

如果是这样,您可以通过调用this.Parent 访问form2 中的form1

【讨论】:

  • 这没有回答问题。如果您仍然需要提问,请使用 cmets。
  • @LucMorin 我已经更新了我的答案,我认为这一切问题都可以通过单例模式来解决......
【解决方案2】:

实际上直接从当前表单更新其他表单并不是一个好主意。当您的用户在当前和活动表单中工作时,最好使用委托和回调设计一个中介器来更新其他表单。

【讨论】:

  • 我的form1 仅用于查询,form2 更多用于技术方面。所以我认为刷新/更新显示就可以了
猜你喜欢
  • 2017-01-16
  • 2019-07-01
  • 2012-05-25
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-27
  • 1970-01-01
相关资源
最近更新 更多