Visual Basic - Estructura if elseif con msgbox

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Daríus
Val: 6
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Estructura if elseif con msgbox

Publicado por Daríus (1 intervención) el 11/10/2019 19:47:56
¡Buenas estimados programadores!

Me estoy iniciando en vb.net y en una de las soluciones que estoy programando en vb.net ultimate 2013 me choqué con un inconveniente.

El formulario es muy elemental, consta de un pictureBox con el siguiente código para el evento click:
1
2
3
4
5
6
7
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
    Dim tiempo = InputBox("Ingrese el tiempo en segundos", "Cuántos segundos?")
 
    Shell("shutdown -s -f -t " & tiempo & "")
 
 
End Sub

El código cumple su cometido, es decir permite programar un apagado de la pc.

Ahora bien se me ocurrió validar la entrada del usuario, es decir que cuando el usuario no ingrese un número entero de segundos de tiempo le envié un mensaje de error. Para ello intenté usar la estructura if elseif, pero el ide de programación me da errores y no consigo hacerlo.
Alguna explicación u ayuda.
De antemano muchisimas gracias
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
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Estructura if elseif con msgbox

Publicado por raul (160 intervenciones) el 11/10/2019 22:45:29
1
2
3
4
5
6
if val(tiempo)> 0 then
msgbox"Operación Cancelada no se ha incluido el tiempo de forma correcta"
exit sub
else
Shell("shutdown -s -f -t " & tiempo & "")
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 Daríus
Val: 6
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Estructura if elseif con msgbox

Publicado por Daríus (2 intervenciones) el 12/10/2019 00:51:38
Estimado Raúl:

primero que nada muchisimas gracias por tu pronta respuesta!!!


Esto resuelve el problema de que el usuario ingrese números negativos, ahora bien, no resolvería que el usuario ingresara letras o nada.
Se te ocurre cómo resolverlo.

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
sin imagen de perfil
Val: 355
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Estructura if elseif con msgbox

Publicado por raul (160 intervenciones) el 12/10/2019 14:53:58
Mira la función VAL convierte todo lo que le des en numero ejem Val("23") = 23 , Val(-42) = 42 y val("abc") =0, para lo que quieres existen 2 soluciones

1- busca en internet sobre las API y clase MSGBOX y veras que puedes restringir la entrada a solo numeros. Esta solución es bastante complicada, sobre todo porque vas a incluir una cantidad de codigo improductivo en tu aplicación con el unico objetivo de controlar un maquillaje.

2- crea un nuevo formulario e ingresa un textbox y en la propiedad keypress escribe esto

1
2
3
4
5
6
7
dim TEMP as integer
temp = keyascii
If (temp >= 48 And temp <= 57) Or temp = 8 Then
      keyascii = temp
else
      keyascii =0
End If
ahora VB evalua si es un numero keycode = 48 - 57 lo deja pasar; asi como, si es la tecla DEL keycode = 8

esta es la forma más simple; incluso te podrias ahorrar los botones controlando la tecla enter KeyCODE = 13 si dentro del evento KEYUP escrives esto
1
2
3
4
5
6
7
8
9
if keyascii = 13 then
TIEMPO = val(text1.text
if val(tiempo)> 0 then
msgbox"Operación Cancelada no se ha incluido el tiempo de forma correcta"
exit sub
else
Shell("shutdown -s -f -t " & tiempo & "")
end if
end if

en fin que te recomiendo el ejemplo 2 es verdad que agregas un formulario extra que tal ves no tenias consevido pero en lo personal me niego a emplear tanto condigo inservible por incluir las API de windows sobretodo porque cambian en el tiempo de acuerdo con los sistemas de windows 98, XP, 2000, 7, 8, 10 y tu quieres algo que funcione seguro por siempre. en fin te dejo la elección
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Daríus
Val: 6
Ha aumentado su posición en 5 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Estructura if elseif con msgbox

Publicado por Daríus (2 intervenciones) el 12/10/2019 18:43:33
Raúl haz sido de gran ayuda.

Te agradezco muchísimo. He aprendido.

Saludos
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