0

我有一个包含列表框的主页。

当用户从列表框中选择配置文件时,会打开一个名为 的子窗口pWindow。此窗口作为通过打开另一个名为 的确认窗口的超链接按钮删除当前配置文件的选项dprofile

我的问题是,一旦用户确认删除他们所在的当前配置文件,并在按钮单击确认它,dProfile我如何更新第一个主页中的 listBox 以便列表不再包含已删除的profile (目前没有这样做。

dProfile窗口中我创建了一个事件 -

public event EventHandler SubmitClicked;

在确定按钮的位置单击我有-

private void OKButton_Click(object sender, RoutedEventArgs e)
{
  if (SubmitClicked != null)
  {
      SubmitClicked(this, new EventArgs());
  }
}

所以在主页上我添加了 -

private void deleteProfile_SubmitClicked(object sender, EventArgs e)
    {
        WebService.Service1SoapClient client = new WebService.Service1SoapClient();

        listBox1.Items.Clear();
        client.profileListCompleted += new EventHandler<profileListCompletedEventArgs>(client_profileListCompleted);
        client.profileListAsync(ID);
    }

我认为这可能已经更新了列表框,因为它在dProfile表单中得到了确认,但是当表单关闭时,列表框保持不变,我必须手动刷新网页才能看到更新。我怎样才能做到这一点?

4

1 回答 1

2

如果我理解正确,那么您有三页。Main、pWindow 和 dProfile。早些时候,您试图从 dProfile 关闭 pWindwow 并且工作正常。现在您要刷新主页上的 listBox1。
为此,您可以遵循类似的策略。您可能正在从主页面打开 pWindow,其中包含以下行

pWindow pWin = new pWindow();
pWin.Show();

现在您可以在 pWindow 类中定义一个新事件。

public event EventHandler pWindowRefeshListBox;

然后在 deleteProfile_SubmitClicked 的事件处理程序中,您可以引发事件以刷新 listbox1,如下行:

private void deleteProfile_SubmitClicked(object sender, EventArgs e)
{
    if(pWindowRefreshListBox != null)
        pWindowRefreshListBox(this, new EventArgs());
    this.Close();
}

然后在您的主页中针对您之前定义的 pWin 对象注册事件。

pWin.pWindowRefreshListBox += new new EventHandler(pWindow_pWindowRefreshListBox);

然后在主页中定义事件。

private void pWindow_pWindowRefreshListBox(object sender, EventArgs e)
{
    listBox1.Items.Clear();
}

这应该刷新列表框。我没有测试代码或语法。因此,您可以在实施之前对其进行检查。

编辑
您可以将 dProfile 中的事件定义为静态

public static event EventHandler SubmitClicked;

然后您将能够在 Main 和 pWindow 中针对 Class Name 注册它

dProfile.SubmitClicked += new ..............

然后相应地实现它,在 pWindow 中,关闭窗口并在主刷新列表框中

编辑:
您可以在主页上创建 deleteProfile 实例,在您的主页面中注册以下内容

deleteProfile.SubmitClicked += new EventHandler(deleteProfile _SubmitClicked)

这应该工作

于 2012-05-10T16:33:09.863 回答