2010-10-06 15 views
1

Nombreux exemples d'appel de méthodes, mais comment modifier une propriété simple? Pour des raisons de démonstration, voici un ensemble de code très simple qui devrait vous aider. Disons que je dois définir la propriété visible d'un formulaire enfant, et donc, il doit être invoqué:VB.net Invoquer une modification de propriété dans un contrôle

Friend Sub activateItem(ByVal myItem As PictureBox) 

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

End Sub 

Merci

+0

Appelez simplement une méthode ici, activateItem. Essayer de l'optimiser est inutile, Invoke est * cher *. –

+0

Hans: quand j'appelle directement la méthode, j'obtiens une erreur "Expression ne produit pas de valeur". Après avoir changé le sub en une fonction avec Return True à la fin, je reçois "Impossible de convertir binary en system.delegate" Des suggestions? Je suis généralement un gars asp.net, donc le traitement des threads est complètement nouveau pour moi. Merci pour l'aide. – Brad

Répondre

6

Si vous utilisez VB.Net 2010, vous pouvez utiliser un lambda expression:

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

Dans votre cas, vous pouvez également appeler myItem.Invoke(myItem.Show).

+0

En utilisant VS2008 pour le moment, la première option n'est pas un choix. La deuxième option me donne une erreur "myItem.Show ne produit pas de valeur" – Brad

+0

Essayez 'myItem.Invoke (AddressOf myItem.Show)' (Je n'ai pas fait VB depuis un moment) – SLaks

+1

@Brad: Ou essayez 'myItem. Invoke (nouvelle action (AddressOf myIem.Show)) ' – SLaks