views:

23

answers:

1

Lots of examples of how to invoke methods, but how does one change a simple property?

For demonstration-sake, here's a very simple set of code that should help. Let's say I need to set the visible property from a child form, and thus, it needs to be invoked:

Friend Sub activateItem(ByVal myItem As PictureBox)

    If myItem.InvokeRequired = True Then
        ????
    Else
        myItem.Visible = True
    End If

End Sub

Thanks

+1  A: 

If you're using VB.Net 2010, you can use a lambda expression:

If myItem.InvokeRequired Then
    myItem.Invoke(Sub() myItem.Visible = True)

In your particular case, you can also call myItem.Invoke(myItem.Show).

SLaks
Using VS2008 at the moment, so the first option isn't a choice. The second option gives me an error "myItem.Show does not produce a value"
Brad
Try `myItem.Invoke(AddressOf myItem.Show)` (I haven't done VB in a while)
SLaks
@Brad: Or try `myItem.Invoke(New Action(AddressOf myIem.Show))`
SLaks
New error there: AddressOf cannot be converted to System.Delegate because System.Delegate is declared MustInhereit and cannot be created.
Brad
I think our posts crossed in the mail. The second method worked. Thanks for your help!
Brad