Usar proyecto creado en C# en mi projecto de Vb.Net !!

Iniciado por TrashAmbishion, 23 Agosto 2016, 23:05 PM

0 Miembros y 1 Visitante están viendo este tema.

TrashAmbishion

Hi,

Voy a Goolear a ver que aparece de igual manera no esta tener toda la ayuda posible..

Saludos

Eleкtro

Cita de: TrashAmbishion en 23 Agosto 2016, 23:05 PMUsar proyecto creado en C# en mi projecto de Vb.Net !!

¿Cual es el problema que encuentra?, solo tienes que referenciar la dll en tu proyecto de VB.NET (de la misma manera que referenciarías un ensamblado de Microsoft .NET Framework) y empezar a usarlo llamando a los métodos y clases y etc que hayas definido en tu librería escrita en C#.

Saludos!








TrashAmbishion

#2
Hola,

Bueno el proyecto no es una DLL es una consola de comandos que se conecta a una aplicación remotamente para pasarle comandos..

https://github.com/Myrcon/Frostbite_Example

Aun no me hago la idea para usarlo..

Salu2

Lo mas facil sería llevarlo a una DLL ?
Como es el proceso para convertirlo ?

O simplemente lo llamo desde mi proyecto, añado una referencia y lo uso de la misma forma pero desde VB.NET

Gracias desde ya


Eleкtro

#3
Cita de: TrashAmbishion en 26 Agosto 2016, 15:23 PMO simplemente lo llamo desde mi proyecto, añado una referencia y lo uso de la misma forma pero desde VB.NET

Exacto, puedes añadir una referencia ya sea de una dll, o de un proyecto (.vbproj/.csproj), e incluso de un executable .NET para usar los miembros que hayas compilado (como si fuese una dll)

Saludos








TrashAmbishion

Compa

No logró entender estas llamadas porfa explicamelo para VB.Net

'Program.Connection.PacketReceived = (Program.Connection.PacketReceived + New FrostbiteConnection.PacketHandler(Connection_PacketReceived))
        'Program.Connection.PacketSent = (Program.Connection.PacketSent + New FrostbiteConnection.PacketHandler(Connection_PacketSent))
        'Program.Connection.Connected = (Program.Connection.Connected + New FrostbiteConnection.EmptyParameterHandler(Connection_Connected))
        'Program.Connection.Disconnected = (Program.Connection.Disconnected + New FrostbiteConnection.EmptyParameterHandler(Connection_Disconnected))
        'Program.Connection.Error = (Program.Connection.Error + New FrostbiteConnection.ErrorHandler(Connection_Error))

Eleкtro

#5
Cita de: TrashAmbishion en 27 Agosto 2016, 20:51 PMNo logró entender estas llamadas porfa explicamelo para VB.Net

Program.Connection.PacketReceived = (Program.Connection.PacketReceived + New FrostbiteConnection.PacketHandler(Connection_PacketReceived))
Program.Connection.PacketSent = (Program.Connection.PacketSent + New FrostbiteConnection.PacketHandler(Connection_PacketSent))
Program.Connection.Connected = (Program.Connection.Connected + New FrostbiteConnection.EmptyParameterHandler(Connection_Connected))
Program.Connection.Disconnected = (Program.Connection.Disconnected + New FrostbiteConnection.EmptyParameterHandler(Connection_Disconnected))
Program.Connection.Error = (Program.Connection.Error + New FrostbiteConnection.ErrorHandler(Connection_Error))

Ese código literalmente no es nada, no se de donde has sacado eso, supongo que habrás utilizado algún conversor de código y te lo ha traducido de esa manera xD.

Analizando el código fuente original intuyo que te refieres a esto:
Código (vbnet) [Seleccionar]
Program.Connection.PacketReceived += new FrostbiteConnection.PacketHandler(Connection_PacketReceived);
Program.Connection.PacketSent += new FrostbiteConnection.PacketHandler(Connection_PacketSent);
Program.Connection.Connected += new FrostbiteConnection.EmptyParameterHandler(Connection_Connected);
Program.Connection.Disconnected += new FrostbiteConnection.EmptyParameterHandler(Connection_Disconnected);
Program.Connection.Error += new FrostbiteConnection.ErrorHandler(Connection_Error);


Son asociaciones de eventos, en VB.NET lo puedes reproducir con los keywords AddHandler y AddressOf
Código (vbnet) [Seleccionar]
AddHandler Program.Connection.PacketReceived, AddressOf Connection_PacketReceived
AddHandler Program.Connection.PacketSent, AddressOf Connection_PacketSent
AddHandler Program.Connection.Connected, AddressOf Connection_Connected
AddHandler Program.Connection.Disconnected, AddressOf Connection_Disconnected
AddHandler Program.Connection.Error, AddressOf Connection_Error


Saludos!








TrashAmbishion

Pues si sobre ese codigo me referia...

Lo que hice fue que le hice una Referencia al .EXE y ese pedazo no sabia como echarlo andar.. muchísimas gracias voy a probarlo...

PD: A parte de este tema estaba pensando en mostrar un Label con diferentes texto y que se mostrara en diferentes partes del Form y tuviera el efecto de desaparecer  poco a poco y aparecer en otro lado con otro texto.. algo similar al FADE OUT y FADE IN que usastes en un SNNIPETs tuyo.. es posible o tengo que ver por otro lado !!

SAlu2 y gracias nuevamente

Eleкtro

#7
Cita de: TrashAmbishion en 27 Agosto 2016, 22:12 PMPD: A parte de este tema estaba pensando en mostrar un Label con diferentes texto y que se mostrara en diferentes partes del Form y tuviera el efecto de desaparecer  poco a poco y aparecer en otro lado con otro texto.. algo similar al FADE OUT y FADE IN que usastes en un SNNIPETs tuyo.. es posible o tengo que ver por otro lado !!

Con un timer y algo de maña mediante GDI+ capturando y dibujando el bitmap del control y reduciéndole la opacidad a la imagen lo puedes hacer por ti mismo, o quizás asignando el nivel de transparencia (0-255) de la propiedad Control.BackColor pero eso no resultaría con todos los controles, pero nada de eso es necesario puesto que para ese tipo de efectos de transición puedes utilizar la librería Transitions:

Escribí un snippet que creo que nunca llegué a publicar en el foro, con ejemplos muy básicos de uso de esa librería:

Código (vbnet) [Seleccionar]
Imports Transitions

' Flash the BackColor of a control.
Dim transFlashCtrl As Control = Me.Button1
transFlashCtrl.BackColor = Control.DefaultBackColor
Transition.run(target:=transFlashCtrl,
              strPropertyName:="BackColor",
              destinationValue:=Color.LightGreen,
              transitionMethod:=New TransitionType_Flash(iNumberOfFlashes:=2, iFlashTime:=800))

' Animate a control with a linear transition.
Dim transLinear As New Transition(New TransitionType_Linear(1000))
Dim transLinearCtrl As Control = Me.Label1
transLinearCtrl.Text = ""
With transLinear
   .add(target:=transLinearCtrl, strPropertyName:="Text", destinationValue:="Hello World")
   .add(target:=transLinearCtrl, strPropertyName:="ForeColor", destinationValue:=Color.LightYellow)
   .run()
End With

' Interchange the position between two controls.
Dim transInOut As New Transition(New TransitionType_EaseInEaseOut(1000))
Dim transInOutCtrl1 As Control = Me.PictureBox1
Dim transInOutCtrl2 As Control = Me.PictureBox2
With transInOut
   .add(target:=transInOutCtrl1, strPropertyName:="Left", destinationValue:=transInOutCtrl2.Left)
   .add(target:=transInOutCtrl1, strPropertyName:="Top", destinationValue:=transInOutCtrl2.Top)
   .add(target:=transInOutCtrl2, strPropertyName:="Left", destinationValue:=transInOutCtrl1.Left)
   .add(target:=transInOutCtrl2, strPropertyName:="Top", destinationValue:=transInOutCtrl1.Top)
   .run()
End With


...aunque para ser sinceros no recuerdo si con esa librería puedes hacer un fade xD, pero puedes hacer efectos muy chulos.

Saludos








TrashAmbishion

Ando convirtiendo pa vb.net y esto perdido con esta parte..

Código (csharp) [Seleccionar]


public delegate void ErrorHandler(FrostbiteConnection sender, Exception e);

public event ErrorHandler Error;


protected void OnError(Exception e) {
            var handler = this.Error;

            if (handler != null) {
                handler(this, e);
            }
        }



El primer error que me dio es que en Vb.Net la palabra Error es un KeyWord asi que la cambie por ErrorH (la H de handler) y quedo asi:


Código (vbnet) [Seleccionar]


Public Delegate Sub ErrorHandler(ByVal sender As FrostbiteConnection, ByVal e As Exception)

   
    Public Event ErrorH As ErrorHandler


        Protected Sub OnError(ByVal e As Exception)
            Dim handler = ErrorH
            If (Not (handler) Is Nothing) Then
                handler(Me, e)
            End If
        End Sub



Asi me lo deja el traductor, yo lo único que cambie fue:

Código (vbnet) [Seleccionar]


     Dim handler as ErrorHandler



Jajaja entonces el ErrorH me dice que es un evento que use el RaiseEvent, para usar esto tengo que primero a ver implementado el AddHandler obligatoriamente ??  esto lo pregunto porque en un proyecto que revise recientemente encontre que hacian uso del RaiseEvent sin el AddHanlder..

Bueno gracias de antemano cualquier ayuda posible..





Eleкtro

#9
Cita de: TrashAmbishion en 31 Agosto 2016, 17:20 PMEl primer error que me dio es que en Vb.Net la palabra Error es un KeyWord asi que la cambie por ErrorH (la H de handler)

Podrías haber escrito simplemente [Error]:
Código (vbnet) [Seleccionar]
Public Event [Error] As ...




Cita de: TrashAmbishion en 31 Agosto 2016, 17:20 PMel ErrorH me dice que es un evento que use el RaiseEvent, para usar esto tengo que primero a ver implementado el AddHandler obligatoriamente ??  esto lo pregunto porque en un proyecto que revise recientemente encontre que hacian uso del RaiseEvent sin el AddHanlder..

Estás confundiendo el significado de las cosas, mira, AddHandler y RaiseEvent no tienen nada que ver, lo primero es para asociar un evento y lo segundo para disparar un evento (desde un invocador de eventos).

El código que has mostrado, el original en C#, hace uso de malas costumbres de programación .NET al implementar un evento mediante el uso de un delegado, y la traducción que has hecho en VB,NET contiene esas malas costumbres y también otras cosas que son incorrectas.

Siguiendo las directrices que aconseja Microsoft, yo lo implementaría así:
Código (vbnet) [Seleccionar]
Public Class TestClass

   Public Event [Error] As EventHandler(Of ErrorArgs)

   Public sub New()
   End Sub

   Public Sub DoWork()
       ' ...
       Dim args As New ErrorArgs(conn:=valor, ex:=valor)
       Me.OnError(args)
   End Sub

   Protected Sub OnError(ByVal e As ErrorArgs)
       If (Me.ErrorEvent IsNot Nothing) Then
           RaiseEvent [Error](Me, e)
       End If
   End Sub

End Class


Código (vbnet) [Seleccionar]
Public NotInheritable Class ErrorArgs : Inherits EventArgs

   Public ReadOnly Property Connection As FrostbiteConnection
   Public ReadOnly Property Exception As Exception

   Private Sub New()
   End Sub

   Public Sub New(ByVal conn As FrostbiteConnection, ByVal ex As Exception)
       Me.Connection = conn
       Me.Exception = ex
   End Sub

End Class


Uso:
Código (vbnet) [Seleccionar]
Public Class TestClass2

   Friend WithEvents Obj As TestClass

   Public Sub New()
       Me.Obj = New TestClass
   End sub

   Private Sub Obj_Error(ByVal sender As Object, ByVal e As ErrorArgs) _
   Handles Obj.Error
       ' ...
   End Sub

End Class


PD: ¿No crees que va siendo hora de que leas los artículos de MSDN y practiques todo lo relacionado con eventos (y delegados) en vez de intentar usarlos o implementarlos sin comprender?, no siempre te lo van a dar todo hecho...

Saludos!