2011-03-04 2 views
0

왼쪽 버튼을 눌러 확인하고 싶습니다. MouseButtons :: Left in C++/cli

나는 Msdna에 빨간색 :

if(e->Button == MouseButtons.Left) {...} 
//or 
if(e->Button == ::MouseButtons.Left) {...} 

그러나 그들 중 아무도 컴파일하지 않습니다.

this->control->MouseDown += new System::Windows::Forms::MouseEventHandler(this, &Form1::control_MouseDown); 

과 같이 그것을 처리 :

void control_MouseDown(Object* sender, System::Windows::Forms::MouseEventArgs* e) {  
    if(e->Button == MouseButtons::Left) { 
     //code here 
    } 
} 
+0

MSDN에서 'e-> Button == MouseButtons.Left'을 어디서 보았습니까? 그게 틀렸어. 실제로 그 말을하는 페이지가 있으면 버그 보고서를 보내 줄거야. –

답변

0

이것은 C++/CLI에 의해 상속 C++ 언어의 골칫거리입니다

0

당신은 당신이 원하는 컨트롤의 이벤트를 연결해야합니다. 그것은 같은 심볼 테이블에 타입의 이름과 클래스 멤버의 이름을 넣는다. 이것은 형식 식별자를 분리하여 유지하는 C#이나 VB.NET 대신 Winforms 코드를 C++/CLI로 작성하는 경우 자주 발생하는 문제입니다.

MouseButtons 열거 형과 Form 클래스의 MouseButtons 속성 사이에 모호성이 있습니다. 둘 다 여기에 있습니다. IntelliSense는 문법 권리를 얻는 것을 돕기 시작합니다. 대신 :: 괜찮은 컴파일러 오류 메시지를 얻으려면 더 이상 확률을 떠나. 당신은 전체의 열거 형 이름을 작성하여 모호성을 해결 : 이런

 if (e->Button == System::Windows::Forms::MouseButtons::Left) { 
     // etc... 
    } 

문제는 아마 C++/CLI는 매우 인기가있어 결코 하나의 이유입니다. 다시 C#은 오히려 클래스 행위입니다. 권장 사항.