Это раздражает язык C ++, унаследованный C ++ / CLI. Он помещает имена типов и имена членов класса в одну таблицу символов. Это то, с чем вы будете часто сражаться, когда будете писать код Winforms в C ++ / CLI вместо C # или VB.NET, языков, в которых идентификаторы типов разделены.
Существует двусмысленность между типом перечисления MouseButtons и свойством MouseButtons класса Form, они оба здесь находятся в области видимости. IntelliSense перестает помогать вам в правильном синтаксисе, который, вероятно, так вы и сделали. вместо :: Больше не оставляя шансов получить достойное сообщение об ошибке компилятора. Вы устраняете неоднозначность, записывая полное имя типа enum:
if (e->Button == System::Windows::Forms::MouseButtons::Left) {
// etc...
}
Подобные проблемы, вероятно, являются одной из причин того, что C ++ / CLI никогда не становился очень популярным. Опять же, C # скорее классовый акт. Рекомендуется.