Невозможно получить доступ к Cursor.Current.Position (Доступ к общему члену .... через экземпляр; квалифицирующее выражение не будет оцениваться - PullRequest
0 голосов
/ 29 апреля 2020

Я пытаюсь определить текущую позицию мыши в событии MouseHover для ToolStripMenuItem. Я использую свойство Cursor.Current.Position для выполнения sh this.

Вот предполагаемый код:

    Private Sub pbNotesFlag_MouseHover(sender As Object, e As EventArgs)
        pbNotesFlagToolTip.Location = New Point(Cursor.Position.X, Cursor.Current.Position.Y)   'New Point(pbNotesFlag.Location.X - 20, pbNotesFlag.Location.Y + 15)
        pbNotesFlagToolTip.Visible = True
        pbNotesFlagToolTip.BringToFront()
    End Sub

Проблема в том, что я получаю следующую ошибку:

Access of shared member, constant member, enum member or nested type through an instance; qualifying types will not be evaluated.

После исследования этого в Интернете я обнаружил, что преобладающее мнение состоит в том, что ссылка курсора должна быть полностью квалифицирована, поэтому я изменил код следующим образом:

    Private Sub pbNotesFlag_MouseHover(sender As Object, e As EventArgs)
        pbNotesFlagToolTip.Location = New Point(System.Windows.Forms.Cursor.Current.Position.X, System.Windows.Forms.Cursor.Current.Position.Y)   'New Point(pbNotesFlag.Location.X - 20, pbNotesFlag.Location.Y + 15)
        pbNotesFlagToolTip.Visible = True
        pbNotesFlagToolTip.BringToFront()
    End Sub

К сожалению, я я все еще получаю ту же ошибку.

Я пытался изменить ссылочный контекст; например, поместив ссылку в модуль вместо класса. До сих пор мне не удалось устранить эту ошибку.

Я не уверен, почему эта ссылка не работает. На первый взгляд, это пример учебника правильного использования (в соответствии с MSDN).

Что мне здесь не хватает?

Любые идеи и / или предложения, конечно, с благодарностью.

1 Ответ

0 голосов
/ 29 апреля 2020

Первый код не работал, потому что форма имеет свойство Cursor, и использование вами этого имени было интерпретировано как это свойство - экземпляр - а не тип. Второй код не работал, потому что вы использовали тип для получения экземпляра, а затем использовали его вместо непосредственного использования типа. Это:

System.Windows.Forms.Cursor.Current.Position

должно быть так:

System.Windows.Forms.Cursor.Position

Вы также можете опустить System, поскольку это пространство имен уже импортировано по умолчанию. Учитывая мой комментарий, ваш код должен быть таким:

 pbNotesFlagToolTip.Location = PointToClient(Windows.Forms.Cursor.Position)
...