2015-02-13 4 views
0

Вот пользовательское меню, которое я сделал, называется MenuM (класс управления пользователя, см. рисунок ниже), состоящий из 2 панелей: MenuM_Caption и MenuMItems_Container. Каждый MenuMItem также является пользовательским элементом управления в пределах панели MenuMItems_Container.vb.net [Panel] .Выберите() на onMouseEnter, чтобы прокручивать, даже если панель не сфокусирована; это не работает

Custom Menu

Чтобы быть в состоянии моего меню приборов типа СПИРАЛЬНОЙ (MenuMItems_Container панели) я должен выбрать любой MenuMItem, в противном случае панель MenuMItems_Container просто не прокручивается, даже при написании одной из следующих команд (или оба):

1) в основной форме, содержащей экземпляр MenuM в качестве контроля:

Public Partial Class MyForm 'System.Windows.Forms.Form 
    Private Sub MenuM1_MouseEnter(sender As Object, e As System.EventArgs) Handles MenuM1.MouseEnter 
     Me.MenuM1.Select() 
    End Sub 
End Class 

2) и/или в пределах класса MenuM

Public Class MenuM 
    Private Sub MenuMItems_Container_MouseEnter(sender As Object, e As System.EventArgs) Handles MenuMItems_Container.MouseEnter 
     Me.MenuMItems_Container.Select() 
    End Sub 
End Class 

Обработчик не вводит MenuMItems_Container.MouseEnter событие. Я думаю, причина в том, что классы MenuMItem поднимают событие до того, как их контейнер может обрабатывать/поднимать одно и то же событие.

Кто-нибудь знает, что делать, чтобы решить эту проблему, пожалуйста? (Me.Parent.Select() на OnMouseEnter() в пределах MenuMItem Класс?)

Спасибо!

ответ

0

Это работает:

В классе MenuM:

Protected Overrides Sub OnGotFocus(e As System.EventArgs) 
    MyBase.OnGotFocus(e) 
    Me.MenuMItems_Container.Select() 
End Sub 

Private Sub MenuMItems_Container_MouseEnter(sender As Object, e As System.EventArgs) Handles MenuMItems_Container.MouseEnter 
    Me.MenuMItems_Container.Select() 'if no MenuMItems or less then MenuMItems_Container Height 
End Sub 

Private Sub MenuM_Caption_MouseEnter(sender As Object, e As System.EventArgs) Handles MenuM_Caption.MouseEnter 
    Me.MenuMItems_Container.Select() 
End Sub 

И в классе MenuMItem

Protected Overrides Sub OnMouseEnter(e As System.EventArgs) 
    MyBase.OnMouseEnter(e) 
    Me.Parent.Select() 
End Sub