У меня есть графический интерфейс, который содержит 10 переключателей и текстовое поле, в которое пользователь должен сделать свой ввод. Событие RadioButton.CheckedChanged подписывается во время выполнения в зависимости от пользовательского ввода (текстовое поле). Итак, в моем случае существует более 50 возможных методов, которые могут подписаться на событие CheckedChanged. Хорошо, я могу отменить подписку на каждый метод один за другим (см. Отрывок из моего кода), но разве нет более трудоемкого и более эффективного способа сделать это? Примерно так:
отмените подписку сразу на все методы события CheckedChanged. Или: определите метод, который в данный момент подписывается на это событие, и отмените подписку на этот метод.
Я уже искал существующее решение и обнаружил следующее: Как удалить все обработчики событий из события , но в моем случае это решение не работает. Как я уже говорил, в моем случае есть радио кнопки, а не обычные кнопки.
Выдержка из моего кода:
public List<RadioButton> RbList
public Form1()
{
InitializeComponent();
WindowState = FormWindowState.Maximized;
RbList = new List<RadioButton>
{
radioButton1, radioButton2, radioButton3, radioButton4, radioButton5, radioButton6, radioButton7,
radioButton8, radioButton9, radioButton10
};
}
private void Unsubscribe()
{
for (int i = 0; i < RbList.Count; i++)
{
RbList.ElementAt(i).CheckedChanged -= Method1;
RbList.ElementAt(i).CheckedChanged -= Method2;
...
}
}
Дополнительная информация по задаваемым вопросам:
Последний подписанный метод не становится отписанным. С помощью переключателей вызываются конкретные PDF-файлы. На заднем плане все еще последний подписанный метод, пока другой метод не подписан. Таким образом, если пользователь изменяет ввод в текстовом поле, и ввод больше не совпадает, так что любой другой метод не может быть подписан, последний метод все еще там, и можно получить доступ к связанным PDF-файлам метода, и это именно то, что я хочу остановиться. У меня не было бы проблемы, если бы PDF-файлы можно было получить, только нажав на переключатель. Тогда я мог бы просто сделать все переключатели невидимыми / недоступными. Но это не тот случай, есть еще один вариант для пользователя вызывать PDF-файлы, о котором я не упомянул - дополнительно есть второе текстовое поле, и если вход в этом текстовом поле равен RadioButton.text, соответствующая кнопка-переключатель также получает проверено, и связанный с этим переключателем файл PDF вызывается, и именно здесь начинается проблема.