У меня возникла проблема с подпиской на форму в событии в пользовательском элементе управления.Не удается получить доступ к событию в
MainForm-код:
public partial class mainForm : Form
{
public mainForm()
{
InitializeComponent();
UserControl menuView = new mnlib.mnlibControl();
newWindow(menuView);
}
public void newWindow(UserControl control)
{
this.mainPanel.Controls.Clear();
this.mainPanel.Controls.Add(control);
}
mnlibControl.OnLearnClick += new EventHandler(ButtonClick); //Error in this line
protected void ButtonClick(object sender, EventArgs e)
{
//handling..
}
}
UserControl-код:
public partial class mnlibControl : UserControl
{
public mnlibControl()
{
InitializeComponent();
}
private void btn_beenden_Click(object sender, EventArgs e)
{
Application.Exit();
}
public event EventHandler LearnClick;
private void btn_lernen_Click(object sender, EventArgs e)
{
if (this.LearnClick != null)
this.LearnClick(this, e);
}
}
Теперь, визуальная студия отмечает "mnlibControl.OnLearnClick ..." линии, как неправильно. «mnlibControl» не будет найден, возможно, отсутствует директива и т. д. Весь этот код и обе формы находятся в одном файле проекта. Я пробовал и искал, как ад, но просто не могу найти решение проблемы.
В форме UserControl есть кнопка - когда она является кликом, она запускает метод newWindow в mainForm и открывает другое окно.
Мой источник для этого решения моей проблемы: How do I make an Event in the Usercontrol and Have it Handeled in the Main Form?
С точно этот код не работает, пока «LearnClick» в строке 5. Он говорит, что будет не будет определения для LearnClick. – dncrft
@dncrft Вам нужно использовать 'mnlib.mnlibControl' вместо' UserControl'. См. Обновленный ответ для получения более подробной информации. – dotnetom
Наконец, это работает! Спасибо! Не знаю, почему я использовал UserControl вместо mnlib.mnlibControl .. вроде глупо;) – dncrft