Я пытаюсь разделить подменю между несколькими различными частями приложения, чтобы оно было согласованным (не желая копировать / вставлять). Я подумал, что это будет просто.Я делаю что-то вроде этого:
public class MyClientClass
Private WithEvents ctx As ContextMenuManager = New ContextMenuManager
Private Sub handler() Handles ctx._myToolstripMenuItem.Click
' do something useful
End Sub
End Class
Public Class ContextMenuManager
Public WithEvents _myToolstripMenuItem As ToolStripMenuItem
Public Sub New()
Me._myToolstripMenuItem = New ToolStripMenuItem
Me._myToolstripMenuItem.Name = "DoSomehting"
Me._myToolstripMenuItem.Size = New System.Drawing.Size(48, 20)
Me._myToolstripMenuItem.Text = "Go!"
End Sub
End Class
Но этот код дает мне сообщение об ошибке: «Дескрипторы» в классах должны указывать переменную «WithEvents», «MyBase», «MyClass» или «Me» с квалификациейединственный идентификатор.
Я предоставил ключевое слово WithEvents как для приложения контейнера, так и для пункта меню.Что дает?Что мне не хватает?Может ли пример C # выдать ту же ошибку?
Изменен фокус, чтобы решить эту проблему другим способом.Обработка всех событий в совместно используемом классе и запуск общего события с помощью общего объекта:
Private Sub MenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles ToolStripMenuItem.Click
' edit _legacyAttributes instance per specifics
' ...
' then always raise the same event with the updated payload object
RaiseEvent TypeChanged(_legacyAttributes)
End Sub
Итак, вы можете представить, что в классе есть десятки подобных обработчиков, каждый из которых изменяет свои _legacyAttributes так, как онимеет смысл ...