2009-11-05 67 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

相關問題