canal visual basic .net

Recursos Visual Basic.NET, VB.NET, Manuales de programación, Tutoriales, Foros de programación, Comunidad de programadores

Usuarios activos:  59

Foros de programación, recursos, tutoriales, sistemas operativos...

Bienvenido a la zona de foros. Participa en alguno de nuestros foros: Foros de visual basic, foros de visual basic.net foros de Crystal reports, programas gratis, foros de C++ - C# , foros de Java, foros de PHP, foros de ASP.net. Seguro que hay un foro que te servirá de gran utilidad y si no lo encuentras avísanos y crearemos uno nuevo.
Resultados 1 al 4 de 4
  1. #1
    El_Ajedrecista está desconectado Junior Member Iniciad@
    Fecha de ingreso
    20 jun, 12
    Mensajes
    3

    Predeterminado Hay manera de simplificar esto?

    Código:
        Public Sub AEscojer(ByVal Escojido As String)
            If Escojido = "Caracol" Then Caracol()
            If Escojido = "Carcasa" Then Carcasa()
            If Escojido = "Manzana" Then Manzana()
            If Escojido = "Funda" Then Funda()
            If Escojido = "Raton" Then Raton()
            If Escojido = "Pila" Then Pila()
            If Escojido = "Impermeable" Then Impermeable()
    '....
    '....
    '....
    '....
        End Sub

  2. #2
    lareost está desconectado Senior Member Avanzad@
    Fecha de ingreso
    15 sep, 11
    Mensajes
    137

    Predeterminado

    En tu codigo seria mejor usar Select Case o ElseIf ya que tal como lo tienes se evaluan todas las instrucciones.

    No acabo de entender a que te refieres cuando dices "simplificar", pero aqui dejo un ejemplo de dos formas de llamar a una funcion por su nombre

    Código:
    Imports System.Collections.Generic
    Imports System.Reflection
    
    Public Class Form1
    
        '------------------------------------------------------------
        ' Esto requiere .NET 3.5 o superior
        Private ReadOnly ffff As New Dictionary(Of String, Action)() From {
            {"A", AddressOf A},
            {"B", AddressOf B},
            {"C", AddressOf C},
            {"D", AddressOf D}
        }
    
        Private Sub Escojer_A(ByRef v As String)
    
            If ffff.ContainsKey(v) Then ffff(v).Invoke()
        End Sub
        '------------------------------------------------------------
    
        '------------------------------------------------------------
        ' Otra forma de llamar a las funciones
        Private Sub Escojer_B(ByRef v As String)
    
            Dim mi As MethodInfo = Me.GetType().GetMethod(v, BindingFlags.NonPublic Or BindingFlags.Instance)
            If mi IsNot Nothing Then mi.Invoke(Me, Nothing)
        End Sub
        '------------------------------------------------------------
    
        Private Sub A()
        End Sub
    
        Private Sub B()
        End Sub
    
        Private Sub C()
        End Sub
    
        Private Sub D()
        End Sub
    
        Private Sub E()
        End Sub
    End Class

  3. #3
    El_Ajedrecista está desconectado Junior Member Iniciad@
    Fecha de ingreso
    20 jun, 12
    Mensajes
    3

    Predeterminado

    Muchisimas gracias, me sirvió muchisimo esto:
    Código:
    Private Sub Escojer_B(ByRef v As String)
    
            Dim mi As MethodInfo = Me.GetType().GetMethod(v, BindingFlags.NonPublic Or BindingFlags.Instance)
            If mi IsNot Nothing Then mi.Invoke(Me, Nothing)
        End Sub

  4. #4
    El_Ajedrecista está desconectado Junior Member Iniciad@
    Fecha de ingreso
    20 jun, 12
    Mensajes
    3

    Predeterminado

    Esto es mas corto:
    Dim Argument As Object() = {Variable1, Variable2} 'Especificar los parametros
    CallByName(FormALlamar, "StringDeLaFuncion", CallType.Method, Argument) 'Llamada a la funcion

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Visual Studio .VisualBasic.net .ADO.NET .ASP.NET .Framework .Crystal report
[Visual Basic .NET · Información legal · Condiciones de uso · Publicidad · Contacto · RSS novedades Foro · Inicio]
Un sitio web de Internelia (Ontecnia) © Copyright 2013 canalvisualbasic.net. Todos los derechos reservados