且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

.NET Windows窗体自定义设计不会刷新菜单

更新时间:2023-01-31 09:50:43

你可能有你的动词混了?

Do you possibly have your verbs mixed up?

在你的code,当你在码头,加油吧,你清楚的动词,然后加入verbDock,不verbUndock。

In your code, when you are Dock-Filling it, your clear the verbs, and then adding the verbDock, not verbUndock.

Private Sub OnDock(ByVal sender As Object, ByVal e As EventArgs)
  'Dim verbo As DesignerVerb = DirectCast(sender, DesignerVerb)
  verbs.Clear()

  'Switch verbs:
  'verbs.Add(verbDock)
  verbs.Add(verbUndock)

  Me.Control.Dock = DockStyle.Fill
End Sub

Private Sub OnUndock(ByVal sender As Object, ByVal e As EventArgs)
  verbs.Clear()

  'Switch verbs:
  'verbs.Add(verbUndock)
  verbs.Add(verbDock)

  Me.Control.Dock = DockStyle.None
End Sub

更新:

试着改变你的设计师类不明确的集合,只需拨动你的动词集合的Visible属性:

Try changing your designer class to not clear the collection, just toggle the Visible properties of your Verb collection:

Public Overrides Sub Initialize(ByVal component As IComponent)
  MyBase.Initialize(component)

  verbDock = New DesignerVerb("Dock to parent container", New EventHandler(AddressOf Me.OnDock))
  verbUndock = New DesignerVerb("Undock from parent container", New EventHandler(AddressOf Me.OnUndock))
  verbs = New DesignerVerbCollection()
  verbs.Add(verbDock)
  verbs.Add(verbUndock)

  If Me.Control.Dock = DockStyle.Fill Then
    verbDock.Visible = False
  Else
    verbUndock.Visible = False
  End If
End Sub

Private Sub OnDock(ByVal sender As Object, ByVal e As EventArgs)
  Me.Control.Dock = DockStyle.Fill
  verbUndock.Visible = True
  verbDock.Visible = False
End Sub

Private Sub OnUndock(ByVal sender As Object, ByVal e As EventArgs)
  Me.Control.Dock = DockStyle.None
  verbDock.Visible = True
  verbUndock.Visible = False
End Sub