У меня есть проект C# .net4, связанный с моделью базы данных EF MySql. В главном окне есть сетка данных, в которой отображается «Введенные таблицы», которые пользователь добавил в базу данных MySql. Когда пользователь дважды нажимает на строку сетки данных одного из «EnteredTickets», открывается окно (называемое редактированием), чтобы разрешить пользователю редактировать «Введенный билет», а затем «сохранить» редактирование. После завершения редактирования редактирование закрывается окно редактирования.Как обработать событие с маршрутизируемым клиентом
Что я хочу сделать, это обновить сетку данных в главном окне, чтобы показать отредактированные данные.
Чтобы сделать это после прочтения, я считаю, что мне нужно поднять событие, а затем «обработать» это событие в MainWindowxmal.cs. В частности, я выполняю шаги here. Как вы увидите, я добавил сообщение, чтобы узнать, что событие было поднято из окна редактирования. Однако я не обрабатывает событие правильно в главном окне как MessageBox я добавил в обработчик событий не отображается «Редактировать Закончено», это код у меня есть
В окне редактирования
public partial class EditTicket : Window
{
//public event EventHandler EditFinished;
// Create a custom routed event by first registering a RoutedEventID
// This event uses the bubbling routing strategy
public static readonly RoutedEvent EditFinishedEvent = EventManager.RegisterRoutedEvent(
"EditFinished", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(EditTicket));
// Provide CLR accessors for the event
public event RoutedEventHandler EditFinished
{
add { AddHandler(EditFinishedEvent, value); }
remove { RemoveHandler(EditFinishedEvent, value); }
}
// This method raises the EditFinished event
void RaiseEditFinishedEvent()
{
RoutedEventArgs newEventArgs = new RoutedEventArgs(EditTicket.EditFinishedEvent);
RaiseEvent(newEventArgs);
MessageBox.Show("Raised Routed");
}
событие возникает в кнопку «сохранить» щелчка следующий код и я получаю Messagebox «Поднятая Routed»
//raise editfinshed event
RaiseEditFinishedEvent();
Мои проблемы возникают на стороне Main Window
Код в
public MainWindow()
{
InitializeComponent();
AddHandler(EditTicket.EditFinishedEvent, new RoutedEventHandler(RefreshEnteredTickets));
Application.Current.MainWindow.WindowState = WindowState.Maximized;
}
Мой код обработчика Главное окно это, но не действия
void RefreshEnteredTickets(object sender, RoutedEventArgs e)
{
MessageBox.Show ("Edit Finished");
}
Может ли один предложить, где я пошло не так, пожалуйста?
Если вы не используете MVVM, то можете проверить это: http://stackoverflow.com/questions/803242/understanding-events-and-event-handlers-in-c-sharp?rq=1 – Ugur
Хорошо спасибо. Пока ничего не осталось за кодом.Не переехал в MVVM –