динамическое назначение события

#c# #wpf #event-handling

#c# #wpf #обработка событий

Вопрос:

Я динамически создаю GroupBox и пытаюсь назначить ему событие MouseLeftButtonDown для выполнения некоторого действия, когда пользователь щелкает по нему левой кнопкой мыши. Это то, что я пробовал:

 public MyClass()
{
    tagGroupBox.MouseLeftButtonDown  = new MouseButtonEventHandler(tagGroupBox_MouseLeftButtonDown);  //generates error: "tagGroupBox_MouseLeftButtonDown does not exist in the current context"
}

private void tagGroupBox__MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
     MessageBox.Show("Left click event triggered");
}
  

Ответ №1:

В методе обработчика есть __ (двойное подчеркивание).

 void tagGroupBox_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
}
  

Комментарии:

1. Вау, я не могу поверить, что пропустил это. Спасибо, что заметили это!

Ответ №2:

Это работает для меня:

 public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        GroupBox g = new GroupBox();
        g.MouseLeftButtonUp  = new MouseButtonEventHandler(g_MouseLeftButtonUp);
        MainGrid.Children.Add(g);
    }

    void g_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        System.Diagnostics.Debugger.Break();
    }
}
  

XAML

 <Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid x:Name="MainGrid">

    </Grid>
</Window>