2009-11-05 7 views
1

En C#, je peux le faire (*):Comment ajouter un gestionnaire de clic à un bouton WPF en C++/CLR?

 Button b = new Button(); 
     b.Click += ButtonOnClick; 
    : 
    void ButtonOnClick(object sender, RoutedEventArgs e) 
    { 
     // do something 
    } 

Mais en C++/CLI je ne peux pas faire:

Button^b = gcnew Button(); 
    b->Click += ButtonOnClick; 
: 
void ButtonOnClick(Object^sender, RoutedEventArgs^e) 
{ 
    // do something 
} 

J'obtiens une erreur du compilateur complaing sur le + = ButtonOnClick: 2>. \ Blub.cpp (108): erreur C3867: 'MyListBoxItem :: ButtonOnClick': appel de fonction manquant liste d'arguments; utiliser « & MyListBoxItem :: ButtonOnClick » pour créer un pointeur vers un membre

(La pointe du compilateur me donne ne fonctionne pas parce qu'il est pas une méthode statique.)

Quel est l'équivalent de (*) en C++/CLI?

Thx Marc

Répondre

1

essayer

b->Click += MAKE_DELEGATE(System::EventHandler, ButtonOnClick); 

b->Click += gcnew System::EventHandler(this, &ButtonOnClick); 
+0

Cela me donne: erreur C2275: 'System :: EventHandler': utilisation illégale de ce type comme une expression . Chercher MAKE_DELEGATE dans msdn me mène à la référence de bibliothèque de MFC. Mais je suppose, je dois créer un (. Net) délégué en quelque sorte - mais je ne sais pas comment. – marc40000

+1

Oh, même si ça ne marche pas, ça m'a indiqué la bonne direction. Cela fonctionne: b-> Cliquez sur + = gcnew RoutedEventHandler (this, & ClassNameWhereTheButtonOnClickMethodIsIn :: ButtonOnClick); Thx :) - Que dois-je marquer comme réponse maintenant? – marc40000

Questions connexes