Вопрос по c#, silverlight – Обновите listBox на главной странице с помощью события нажатия кнопки в дочернем окне.

0

У меня есть главная страница, которая содержит listBox.

Когда пользователь выбирает профиль из списка, это открывает дочернее окно с именемpWindow. This window as the option to delete the current profile via a hyperlink button that opens up a another confirmation window called dprofile.

У меня такой вопрос: возможно ли, что пользователь подтвердил удаление текущего профиля и подтвердил его нажатием кнопкиdProfileКак я могу обновить listBox на первой главной странице, чтобы список больше не содержал удаленный профиль (что он не делает в настоящее время.

вdProfile окно, которое я создал событие -

<code>public event EventHandler SubmitClicked;
</code>

Где в кнопке ОК нажмите у меня

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

Так что на главной странице я добавил

<code>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);
    }
</code>

Я думал, что это могло обновить список, как это было подтверждено вdProfile Однако, когда форма закрывается, listBox остается прежним, и мне приходится вручную обновлять веб-страницу, чтобы увидеть обновление. Как я могу это сделать?

на главной странице после инициализации необходимо зарегистрировать событие таким образом, чтобы оно работало Habib
к сожалению, ни то, ни другое не кажется жизнеспособным, я думаю, что это будет работать для winForms, хотя. Исходя из того, что я не использую «deleteProfile.SubmitClicked + = new EventHandler (deleteProfile _SubmitClicked); & apos; линия, которая работала в вашем другом методе? Ebikeneser
оооо, я думаю, что вы даже не участвуете в этом событии, вам нужно зарегистрировать событие с этой строкой Habib
после вызова clear попробуйте listBox1.DataBind (); или listBox1.Refresh (); Habib
проблема в том, что мне не нужно создавать новый "deleteProfile"; экземпляр, тогда как я был раньше. Возможно ли это & lt; так как я не уверен, где эта строка поместится на главной странице ... Ebikeneser

Ваш Ответ

1   ответ
2

Если я правильно понял, у вас есть три страницы. Main, pWindow и dProfile.Ранее Вы пытались закрыть pWindwow от dProfile, и это работало правильно. Теперь вы хотите обновить список Box1 на главной странице.
Чтобы достичь этого, вы можете следовать аналогичной стратегии. Вы, вероятно, открываете 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();
}

Это должно обновить список. Я не проверял код или синтаксис. Таким образом, вы можете проверить это до реализации.

EDIT
вы можете определить событие в dProfile как статическое

public static event EventHandler SubmitClicked;

Тогда вы сможете зарегистрировать его в Main и pWindow против Class Name

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

Затем реализуйте это соответствующим образом, в pWindow, закройте окно и в главном окне обновления

EDIT:
 Вы можете создать экземпляр deleteProfile на главной странице, зарегистрировать следующее в своей главной

deleteProfile.SubmitClicked += new EventHandler(deleteProfile _SubmitClicked)

это должно работать

Я попробовал этот код, и он работал один раз, но после этого он не работает, мне нужно добавить четкую функцию? Я попробовал ваш оригинальный ответ, так как не полностью понял редактирование. Ebikeneser

Похожие вопросы