Visual Basic.NET - Abrir un formulario mientras se cumpla una condición (Do, Try Catch)

 
Vista:
Imágen de perfil de Andrés
Val: 48
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Abrir un formulario mientras se cumpla una condición (Do, Try Catch)

Publicado por Andrés (27 intervenciones) el 20/03/2019 21:19:47
Buenas tardes amigos de LWP.

Quisiera que me ayudarán con lo siguiente. Tengo una ventana con un Button que debe ejecutar otra ventana mientras se cumpla una condición en especifica, tomando el valor de un TextBox.

Si el valor del TextBox es mayor o igual a 2 y es menor igual a MaxJugadores entonces que me ejecute o me llame otra ventana y me oculte está. Estoy utilizando un Do While y un Try Catch; cuando dígito un valor fuera de la condición no me funciona.

Espero me puedan ayudar, con este código o si conocen una forma mejor les agradecería...

Aquí les dejo el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Public Class CantidadJugadores
 
    Private Jugadores As Integer = 0
    Private MaxJugadores As Integer = 4
 
    Private Sub btnJugar_Click(sender As Object, e As EventArgs) Handles btnJugar.Click
        Dim ok As Boolean = True
        Do
            Try
                Jugadores = Integer.Parse(txtCantidad.Text)
                ok = True
                If Not Jugadores <= MaxJugadores And Jugadores >= 2 Then
                    ok = False
                    MessageBox.Show("Por favor ingrese una cantidad minima de 2 jugadores y una maxima de" + MaxJugadores, "Cantidad de Jugadores!", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
            Catch ex As Exception
                MessageBox.Show("El número de jugadores no es válido", "Cantidad de Jugadores!", MessageBoxButtons.OK, MessageBoxIcon.Error)
                Console.WriteLine(ex.Message)
                ok = False
            End Try
        Loop While Not ok
        If Jugadores <= MaxJugadores And Jugadores >= 2 Then
            Dim turno As TurnoJugadores = New TurnoJugadores()
            turno.Show()
            Me.Hide()
        End If
 
    End Sub
 
    Private Sub btnSalir_Click(sender As Object, e As EventArgs) Handles btnSalir.Click
        Me.Close()
        MenuPrincipal.Visible = True
    End Sub
End Class

Gracias amigos espero me puedan ayudar...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gilman
Val: 224
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Abrir un formulario mientras se cumpla una condición (Do, Try Catch)

Publicado por gilman (81 intervenciones) el 21/03/2019 09:03:54
Prueba cambiando
1
2
3
4
If Jugadores < 2 Or MaxJugadores < Jugadores Then
                    ok = False
                    MessageBox.Show("Por favor ingrese una cantidad minima de 2 jugadores y una maxima de" + MaxJugadores, "Cantidad de Jugadores!", MessageBoxButtons.OK, MessageBoxIcon.Information)
                End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Abrir un formulario mientras se cumpla una condición (Do, Try Catch)

Publicado por Phil Rob (1554 intervenciones) el 21/03/2019 09:08:42
Hola,

Probar el TextBox en la cicla "Do ... While" no es una buena idea porque el TextBox no es revaluado ...
Mejor idea de trabajar con el eventoTextChanged del TextBox txtCantidad : Sub txtCantidad_TextChanged( ....

El procedimiento :
1
2
3
4
5
6
7
8
Private Sub txtCantidad_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtCantidad.TextChanged
        Jugadores = CType(txtCantidad.Text, Integer)
        If Jugadores <= MaxJugadores And Jugadores >= 2 Then
            Dim turno As TurnoJugadores = New TurnoJugadores()
            turno.Show()
            Me.Hide()
        End If
End Sub

Que tenga un buen día
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de gilman
Val: 224
Ha disminuido 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Abrir un formulario mientras se cumpla una condición (Do, Try Catch)

Publicado por gilman (81 intervenciones) el 21/03/2019 10:17:20
Tienes razón, el bucle no funcionará correctamente, ya que si el valor inicial es erroneo no saldrá nunca del bucle, pero tampoco me parece una opción lanzar el formulario desde el evento TextChanged, ya que si, por error, queriendo una partida de dos jugadores pulsamos la tecla 3, lanzará la partida para tres jugadores sin darnos la opción a corregirlo.
Lo mejor sería seguir manteniendo el lanzamiento de la pantalla desde el click del botón pero cargar el código del evento a:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub btnJugar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnJugar.Click
 
	Dim ok As Boolean = True
	Try
		Jugadores = Integer.Parse(txtCantidad.Text)
		If Not Jugadores <= MaxJugadores And Jugadores >= 2 Then
			ok = False
			MessageBox.Show("Por favor ingrese una cantidad minima de 2 jugadores y una maxima de" + MaxJugadores, "Cantidad de Jugadores!", MessageBoxButtons.OK, MessageBoxIcon.Information)
		End If
	Catch ex As Exception
		MessageBox.Show("El número de jugadores no es válido", "Cantidad de Jugadores!", MessageBoxButtons.OK, MessageBoxIcon.Error)
		Console.WriteLine(ex.Message)
		ok = False
	End Try
 
	If ok Then
		Dim turno As TurnoJugadores = New TurnoJugadores()
		turno.Show()
		Me.Hide()
	End If
 
End Sub
Y que después de una entrada erronea se tenga que pulsar el botón una vez corregido el error
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Andrés
Val: 48
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Abrir un formulario mientras se cumpla una condición (Do, Try Catch)

Publicado por Andrés (27 intervenciones) el 21/03/2019 20:43:01
Muchas Gracias gilman. Agradezco tu aporte! Estoy aprendiendo y me ha servido de mucho tu ayuda!

Estoy intentando pasar manualmente un programa hecho en Java y lo quiero pasar a .Net. Ya que este junto con C# son los lenguajes que más me gustan!

Quisiera saber si en la medida que vaya pasando el programa a .Net, tu me puedas ayudar? Se trata de un juego llamado el Cubilete que es de dados.

Gracias...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar