none
Salir de un Ciclo al presionar una tecla RRS feed

  • Pregunta

  • Hola a todos.

    Tengo el siguiente código, que no hace más que sumar uno a "contador"

            While ("aqui")

                contador =  + 1

            End While

    Bueno, pues lo que deseo es colocar una condición en "aquí", que sea algo así como: 

    MIENTRAS (NO SE PRESIONA UNA TECLA) que haga el ciclo, y al presionar una tecla, pues finalizar el ciclo,

    o bien leer una tecla y salir del ciclo, algo así:

            While (.T.)

                contador =  + 1

                if "DETECTA-F10" then

                     Exit

                end if

            End While

    Espero su ayuda.

    Gracias.

    (Uso VB.Net 2010)

    viernes, 28 de diciembre de 2018 19:35

Respuestas

  • Muchas gracias a todos, lo más fácil fue copiar el código de: J. Carlos Herrero, aunque Yo por ser principiante, tengo el 90% de dudas, jajajaa

    Pero igual, voy a repasar el código una y otra vez, hasta comprenderlo.

    Gracias a todos por su tiempo!!

    Que pasen un buen año 2019 !!


    Varas2

    • Marcado como respuesta EL CHAPUZ jueves, 3 de enero de 2019 15:19
    jueves, 3 de enero de 2019 15:18

Todas las respuestas

  • hola

    podrias usar

    While (True)
      
       If condicion Then
    
          Exit While
        End If
    
    End While

    con el true repetira el ciclo de forma infinita

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 28 de diciembre de 2018 19:55
  • Gracias Leandro.

    Quiero hacer un ciclo cualquiera y que finalice cuando presiono una tecla, eso es todo!!, 

    puede ser una tecla específica o cualquier tecla.

    Lo de .T. por True, fue un mal teclazo!

    Espero tus comentarios.

    Saludos.

    viernes, 28 de diciembre de 2018 20:01
  • hola chapuz

    en que plataforma estas trabajando en windows form o consola

    en consola seria 

    while (Console.ReadKey().Key != ConsoleKey.F10)

    si estas en windows form seria en el evento keydown del form

    While(e.Key != Key.F10)

    suerte

    Pd perdona el != es c# en vb creo que es <>? 
    viernes, 28 de diciembre de 2018 20:03
  • entonces seria

    While (True)

    Console.WriteLine("Presione una tecla:") ConsoleKeyInfo keyInfo = Console.ReadKey() If keyInfo.Key = ConsoleKey.Escape Then Exit While End If End While

    solo sole si se presiona enter

     Console.ReadKey Method

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 28 de diciembre de 2018 20:13
  • No mis amigos, 

    En el caso de:  

    While(e.Key != Key.F10)

    No me reconoce el e.key, quizá por el evento que estoy manejando, no lo sé, no soy muy experto,

    y con

    ConsoleKeyInfo keyInfo = Console.ReadKey() If keyInfo.Key = ConsoleKey.Escape Then Exit While End If

    Tampoco lo reconoce, me da error.

    Les dejo el código que tengo, en un formulario tengo un botón para iniciar el contador, además utilizo VB.NET del año 2010

    Es un ciclo sencillo, solo necesito una forma de parar el proceso, puede ser presionando una tecla cualquiera o quizá con un botón de <STOP> u otra forma (escucho sus propuestas)

    Gracias por su tiempo Leandro y Pedro.

           

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim contador As Integer = 1

            While (True)

                contador = contador + 1
                If contador > 8 Then
                    contador = 1
                End If

            End While

        End Sub



    Varas2

    viernes, 28 de diciembre de 2018 21:49
  • Hola:
    En un Form como el de la imagen

    Copia y pega el siguiente codigo

    Public Class Form1
        Private mbIniciado As Boolean = False
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
            Me.KeyPreview = True
            Me.NumericUpDown1.Minimum = 0
            Me.NumericUpDown1.Maximum = 1000000000
            Me.NumericUpDown1.Increment = 1
        End Sub
        Private Sub lP_Iniciar()
            mbIniciado = True
            While mbIniciado = True
                Me.NumericUpDown1.Value = Me.NumericUpDown1.Value + 1
                Application.DoEvents()
            End While
        End Sub
        Private Sub lP_Parar()
            mbIniciado = False
        End Sub
        Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
            Select Case keyData
                Case Keys.Enter Or Keys.Return
                    If mbIniciado = False Then
                        lP_Iniciar()
                    Else
                        lP_Parar()
                    End If
            End Select
            Return MyBase.ProcessCmdKey(msg, keyData)
        End Function

    End Class

    P.D.
    Prueba tecleando la tecla Intro

    Un saludo desde Bilbo
    Carlos


    viernes, 28 de diciembre de 2018 22:20
  •       

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim contador As Integer = 1

            While (True)

                contador = contador + 1
                If contador > 8 Then
                    contador = 1
                End If

            End While

        End Sub



    Varas2

    Noooo! estas utilizando el evento del click de un boton simplemente le colocas la palabra Close() y cierra la aplicacion? que es que creo que quieres? o si es el form.

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click    
    
    Me.Close()    
    
    End Sub

    y como te dije anteriormente uso c# el codigo en vb es este...

        Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
            While e.KeyCode = Keys.F10 
                Me.Close()
            End While
        End Sub
    usando el while...

    suerte!


    • Editado greg_dorian viernes, 28 de diciembre de 2018 22:53
    • Propuesto como respuesta Pedro AlfaroModerator miércoles, 2 de enero de 2019 18:04
    • Marcado como respuesta EL CHAPUZ jueves, 3 de enero de 2019 15:16
    • Desmarcado como respuesta EL CHAPUZ jueves, 3 de enero de 2019 15:16
    viernes, 28 de diciembre de 2018 22:52
  • Muchas gracias a todos, lo más fácil fue copiar el código de: J. Carlos Herrero, aunque Yo por ser principiante, tengo el 90% de dudas, jajajaa

    Pero igual, voy a repasar el código una y otra vez, hasta comprenderlo.

    Gracias a todos por su tiempo!!

    Que pasen un buen año 2019 !!


    Varas2

    • Marcado como respuesta EL CHAPUZ jueves, 3 de enero de 2019 15:19
    jueves, 3 de enero de 2019 15:18