Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Topic started by: TrashAmbishion on 18 October 2016, 19:36 PM

Title: Accediendo a variable declarada con eventos (WithEvents)
Post by: TrashAmbishion on 18 October 2016, 19:36 PM
En el form principal (frmprin) declare

Code (vbnet) Select
Private WithEvents mysocket As ShadowMud.Sockets.AsyncSocket

Necesito acceder a ella desde una clase, no lo declare Shared porque tengo que hacer muchos cambios en Sub que trabajan con el desde el form, por lo que declare otra variable similar pero Shared

Code (vbnet) Select
Private Shared WithEvents samesocket As ShadowMud.Sockets.AsyncSocket

En un Sub

Code (vbnet) Select
Sub X

'Ya mysocket fue inicializado en otro Sub

samesocket = mysocket

End Sub

Desde la clase:

Sub Y

frmprin.samesocket.enviar("lolololo")

End Sub


No creo una varible en la misma clase porque esta lo que guarda es el estado de una conexión TCPIP y necesito utilizar esa misma para enviar datos.

Gracias cualquier ayuda..

Salu2
Title: Re: Accediendo a variable declarada con eventos (WithEvents)
Post by: Eleкtro on 18 October 2016, 21:19 PM
Quote from: TrashAmbishion on 18 October 2016, 19:36 PMNecesito acceder a ella desde una clase

Si quieres acceder al miembro "MySocket" desde otra clase distinta a donde declaraste dicho objeto, entonces debes reemplazar la visibilidad "Private" para eliminar la restricción de acceso al miembro declarado a nivel de clase, logicamente.

En su lugar puedes utilizar la visibilidad "Friend", la cual te permitirá acceder a dicho miembro a nivel de ensamblado, es decir, desde cualquier otra clase o módulo que exista dentro de tu proyecto. Ejemplo:

Code (vbnet) Select
Imports ShadowMud.Sockets

Public NotInheritable Class Form1 : Inherits Form

   Friend WithEvents MySocket As AsyncSocket

End Class


Code (vbnet) Select
Imports ShadowMud.Sockets

Public NotInheritable Class Class1

   Private Sub New()
   End Sub

   Public Shared Sub MyMethod()
       Dim sock As AsyncSocket = My.Forms.Form1.MySocket
       ' ...
   End Sub

End Class


También puedes usar la sentencia de visibilidad "Public" en lugar de "Friend", claro está, suponiendo que necesites y/o no te importe que cualquier otra persona pueda acceder al miembro "MySocket" referenciando el ensamblado que estás compilando.

Saludos!
Title: Re: Accediendo a variable declarada con eventos (WithEvents)
Post by: TrashAmbishion on 19 October 2016, 05:38 AM
Thx bro