2009-11-05 40 views
1

在C#中,我可以做(*):如何将点击处理程序添加到C++/CLR中的WPF按钮?

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

但是在C++/CLI我不能做:

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

我得到一个编译错误complaing有关+ = ButtonOnClick: 2>。\ blub.cpp(108):错误C3867:'MyListBoxItem :: ButtonOnClick':函数调用缺少参数列表;使用“& MyListBoxItem :: ButtonOnClick”创建一个指向成员

(尖端编译器给我不起作用,因为它不是一个静态方法。)

什么是相当于(* )在C++/CLI?

THX 马克

回答

1

尝试

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

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

这给了我:错误C2275: '系统::事件处理程序':非法使用这种类型作为表达式。在MSDN中查找MAKE_DELEGATE会将我引向MFC库参考。 但我想,我必须创建一个(.net)委托 - 但我不知道如何。 – marc40000 2009-11-05 15:07:00

+1

哦,虽然这也行不通,但它指出了我的正确方向。这是工作: b->点击+ = gcnew RoutedEventHandler(this,&ClassNameWhereTheButtonOnClickMethodIsIn :: ButtonOnClick); Thx :) - 我现在应该标记为答案? – marc40000 2009-11-06 11:57:53

相关问题