C++ cli 鼠标按钮::左键为c++/cli

C++ cli 鼠标按钮::左键为c++/cli,c++-cli,C++ Cli,我想检查一下左边的按钮是否按下了 我在Msdna上看到红色: if(e->Button == MouseButtons.Left) {...} //or if(e->Button == ::MouseButtons.Left) {...} 但是没有人编译。您需要将事件挂接到所需的控件上: this->control->MouseDown += new System::Windows::Forms::MouseEventHandler(this, &Form1::

我想检查一下左边的按钮是否按下了

我在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
    }
}

您需要将事件挂接到所需的控件上:

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
    }
}

<>这是C++语言的一个烦恼,继承了C++/CLI。它将类型名称和类成员名称放在同一个符号表中。当您使用C++/CLI而不是C#或VB.NET编写Winforms代码时,您经常会遇到这种情况,因为C#或VB.NET是将类型标识符分开的语言

MouseButtons枚举类型和Form类的MouseButtons属性之间存在歧义,它们都在这里的范围内。IntelliSense停止帮助您获得正确的语法,这可能就是您最终使用的语法。取而代之的是:不再留下任何机会来获得一条体面的编译器错误消息。您可以通过完整写入枚举类型名称来解决歧义:

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

这些问题可能是C++/CLI从未流行的原因之一。再说一遍,C#相当于一种阶级行为。这是C++语言的一个烦恼,它是由C++/CLI继承的。它将类型名称和类成员名称放在同一个符号表中。当您使用C++/CLI而不是C#或VB.NET编写Winforms代码时,您经常会遇到这种情况,因为C#或VB.NET是将类型标识符分开的语言

MouseButtons枚举类型和Form类的MouseButtons属性之间存在歧义,它们都在这里的范围内。IntelliSense停止帮助您获得正确的语法,这可能就是您最终使用的语法。取而代之的是:不再留下任何机会来获得一条体面的编译器错误消息。您可以通过完整写入枚举类型名称来解决歧义:

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

这些问题可能是C++/CLI从未流行的原因之一。再说一遍,C#相当于一种阶级行为。推荐。

您在哪里看到MSDN上的
e->Button==MouseButtons.Left
?这是错误的,如果有任何页面真的这么说,我会提交一份错误报告。你在哪里看到MSDN上的
e->Button==MouseButtons.Left
?这是错误的,如果有任何页面真的这么说,我会提交一份错误报告。