2 c++-cli
我想检查一下左侧按钮是否被按下。
我在Msdna上红了:
if(e->Button == MouseButtons.Left) {...}
//or
if(e->Button == ::MouseButtons.Left) {...}
Run Code Online (Sandbox Code Playgroud)
但它们都没有编译。
这是C++语言的一个烦恼,由C++/CLI继承。它将类型名称和类成员名称放在同一个符号表中。当您使用 C++/CLI 而不是 C# 或 VB.NET(将类型标识符分开的语言)编写 Winforms 代码时,这是您经常会遇到的问题。
MouseButtons 枚举类型和 Form 类的 MouseButtons 属性之间存在歧义,它们都在此处的范围内。IntelliSense 不再帮助您获得正确的语法,这可能就是您最终得到的结果。而不是 :: 不再有机会获得像样的编译器错误消息。您可以通过完整编写枚举类型名称来解决歧义:
if (e->Button == System::Windows::Forms::MouseButtons::Left) {
// etc...
}
Run Code Online (Sandbox Code Playgroud)
诸如此类的问题可能是 C++/CLI 从未流行起来的原因之一。话又说回来,C# 是一种集体行为。受到推崇的。
| 归档时间: |
|
| 查看次数: |
3756 次 |
| 最近记录: |