У меня есть этот код:Как правильно сбросить пользовательские события в C#?
private void loadGENIOFileToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog dlgFile = new OpenFileDialog();
dlgFile.InitialDirectory = Properties.Settings.Default.PreviousPath;
dlgFile.Title = "Select GENIO file";
dlgFile.Filter = "GENIO files (*.txt)|*.txt";
dlgFile.FilterIndex = 0;
dlgFile.Multiselect = false;
if (dlgFile.ShowDialog() == DialogResult.OK)
{
Properties.Settings.Default.PreviousPath = Path.GetDirectoryName(dlgFile.FileName);
DeleteView();
m_oThreadServices.OnLoadingCompleted += (_sender, _e) =>
{
mruMenu.AddFile(dlgFile.FileName);
m_sUITInfo.dbDatabase = m_oThreadServices.GetDatabase();
CreateView();
};
m_oThreadServices.SetGenioFilePath(dlgFile.FileName);
m_oThreadServices.start();
}
}
Но я также пытаюсь реализовать обработчик MRU:
private void OnMruFile(int number, String filename)
{
if (File.Exists(filename))
{
Properties.Settings.Default.PreviousPath = Path.GetDirectoryName(filename);
DeleteView();
m_oThreadServices.OnLoadingCompleted += (_sender, _e) =>
{
mruMenu.SetFirstFile(number);
m_sUITInfo.dbDatabase = m_oThreadServices.GetDatabase();
CreateView();
};
m_oThreadServices.SetGenioFilePath(filename);
m_oThreadServices.start();
}
else
mruMenu.RemoveFile(number);
}
}
Моя m_oThreadServices.OnLoadingCompleted
строка кода, кажется, требует, чтобы я использую + = и, как следствие, если я первый загружает файл, он добавляет первый обработчик событий. Если я затем перейду к использованию списка MRU, чтобы загрузить другой файл, он заканчивает работу OnLoadingCompleted обработчики.
Я пробовал m_oThreadServices.OnLoadingCompleted =
, но это не позволит. Итак, каков правильный способ для меня перехватить обработчик событий и не в конечном итоге вызвать оба набора кода? Неужели я ошибаюсь?
спасибо.
Спасибо. Я попробую это утром. –
Это работает именно так, как я требую, и я ценю ваше объяснение. Еще раз спасибо! –