Почему событие не меняет изображение? - PullRequest
0 голосов
/ 10 января 2012

Я очень усердно работал над выяснением этого и просто не могу понять события.Может ли кто-нибудь помочь мне понять процесс события в моем коде?Или скажите мне, почему мое изображение не переключается при запуске кода?

Объявления класса и членов

Partial Public Class Name
    Implements IChat

Private member As String
Private instanceContext As InstanceContext
Private participant As IChatChannel
Private ostat As IOnlineStatus
Private factory As DuplexChannelFactory(Of IChatChannel)

Внутри моего Connect Sub

'Construct InstanceContext to handle messages on callback interface. 
' An instance of ChatApp is created and passed to the InstanceContext.
instanceContext = New InstanceContext(Me)

' Create the participant with the given endpoint configuration
' Each participant opens a duplex channel to the mesh
' participant is an instance of the chat application that has opened a channel to the mesh
factory = New DuplexChannelFactory(Of IChatChannel)(instanceContext, "ChatEndpoint")
participant = factory.CreateChannel()

' Retrieve the PeerNode associated with the participant and register for online/offline events
' PeerNode represents a node in the mesh. Mesh is the named collection of connected nodes.
ostat = participant.GetProperty(Of IOnlineStatus)()
AddHandler ostat.Online, AddressOf Me.OnOnline
AddHandler ostat.Offline, AddressOf Me.OnOffline

Subподпрограммы, которые должны изменить образ

Public Sub Join(ByVal member As String) Implements IChat.Join
    instanceShellProp.imgP2P.Image = Namespace.My.Resources.Offline 
    MsgBox("JOINED OFFLINE")
End Sub

Public Sub Leave1(ByVal member As String) Implements IChat.Leave
    instanceShellProp.imgP2P.Image = Namespace.My.Resources.Disconnected  
    MsgBox("NOT CONNECTED")
End Sub

Public Sub OnOnline(ByVal sender As Object, ByVal e As EventArgs)
    instanceShellProp.imgP2P.Image = Namespace.My.Resources.Online 
    MsgBox("JOINED ONLINE")
End Sub

Public Sub OnOffline(ByVal sender As Object, ByVal e As EventArgs)
    instanceShellProp.imgP2P.Image = Namespace.My.Resources.Offline 
    MsgBox("JOINED OFFLINE")
End Sub

instanceShellProp возвращает экземпляр командной консоли, который является контейнером MDI.

Все изображения находятся в ресурсах и правильно написаны и на них ссылаются.Появится всплывающее окно MessageBox, но изображения не изменятся, за исключением присоединения.

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

Вся помощь приветствуется!

РЕДАКТИРОВАТЬ

Хорошо, я нахожу это странным ... Я чувствую, что приближаюсь.Когда окно сообщения не закомментировано, изображение изменится, когда оно закомментировано, изображение не изменится.Любые лучшие предложения о том, как заставить это работать?

Public Sub OnOnline(ByVal sender As Object, ByVal e As EventArgs)
    With instanceShellProp.imgP2P
        .Image = Nothing
        .Visible = True
    End With
    'MsgBox("JOINED ONLINE")
    With instanceShellProp.imgP2P
        .Image = Namespace.My.Resources.Online
        .Visible = True
    End With
End Sub

Ответы [ 2 ]

0 голосов
/ 10 января 2012

Попробуйте позвонить instanceShellProp.imgP2P.Refresh() после смены изображения.

Документация Microsoft для Refresh гласит:

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

0 голосов
/ 10 января 2012

Добавлено приложение. DoEvents (), и оно позволило ему работать.Не уверен, почему, но если бы кто-то мог объяснить, это было бы здорово!Спасибо!

...