Странная ошибка WndProc в .Net.VB.Net более конкретно - PullRequest
2 голосов
/ 21 апреля 2010

ETA: я использую Visual Studio 2008 Express Edition.

Если я перезаписываю WndProc и каким-то образом путаюсь, я обычно возвращаюсь назад, комментируя код, пока он снова не заработает.

Странная вещь с WndProc - вы можете сократить его до:

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    MyBase.WndProc((m))
End Sub

и все равно выдает ошибку.

Я должен удалить код и ввести его заново, чтобы сбросить ошибку.

Кто-нибудь еще испытал это?

ETA:

Ответил Крис Хаас.

Я не понял, но эта проблема должна была возникнуть только тогда, когда я использовал код из отражателя. Reflector неправильно переводит в vb.net и вставляет дополнительные скобки в вызовы к базе WndProc.

1 Ответ

4 голосов
/ 21 апреля 2010

Когда вы заключаете аргумент в скобки, вы переопределяете вызов ByRef и вместо этого вызываете его ByVal. См. Аргумент, не изменяемый вызовом процедуры - лежащая в основе переменная

Просто измените код на:

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    MyBase.WndProc(m)
End Sub
...