CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Cargar formularios de forma aleatoria
Jesmi89:
Hola lo que pasa es q estoy haciendo un proyecto sobre las tablas de multiplicar en las que en cada form me genera cada tabla, es decir la de 2, 3, 4, asi sucesivamente, y lo que quiero es q cada vez q el usuario ejecute la aplicacion se cargue un formulario distinto cada vez, ya que despues de realizar cierto numero de aciertos la aplicacion se cierra.
Pero en verdad no he encontrado la forma sobre como se podria hacer y espero sea posible.
Ojala alguien me pueda colaborar u orientarme sobre q hacer. Gracias ;)
gabio2:
La idea NO es tener un formulario por cada tabla, la idea es cargar una tabla de multiplicar diferente en tú formulario.
Como cargas tus tablas.. muestra tú código para ver que haz hecho.. un saludo! :)
Jesmi89:
hola gabio2, ps mira la idea si es cargar cada tabla en formulario independiente, y ps lo q tengo en cada uno de ellos, claro esta cmbiandole eltipo d etabla a mostrar es asi:
--- Código: vb.net ---Public Class Form1 Dim intentosfallidos, aciertos As Integer Dim Random As New Random() Dim hora As Integer = 0 Dim minuto As Integer = 0 Dim segundo As Integer = 0 Dim milisegundo As Integer = 0 Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress If Not Char.IsDigit(e.KeyChar) And Asc(e.KeyChar) <> 8 Then e.Handled = True End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If (Val(Label1.Text) * Val(Label6.Text) = Val(TextBox1.Text)) Then MsgBox("Muy bien") Me.TextBox1.Text = "" TextBox1.Focus() aciertos = aciertos + 1 TextBox3.Text = aciertos Dim op2 As Integer = Random.Next(2, 10) Label6.Text = op2 Static Dim iImage2 As Integer Select Case iImage2 Case 0 PictureBox1.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("C:UsersJessica.JorgeA1DocumentsVisual Studio 2005ProjectsWindowsApplication1WindowsApplication1PICTURESonionhead011_thumb.gif") iImage2 += 1 Case 1 PictureBox1.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("C:UsersJessica.JorgeA1DocumentsVisual Studio 2005ProjectsWindowsApplication1WindowsApplication1PICTURESonionhead086_thumb.gif") iImage2 += 1 End Select ElseIf Not (Val(Label1.Text) * Val(Label2.Text) = Val(TextBox1.Text)) Then MsgBox("El resultado no es correcto") Me.TextBox1.Text = "" TextBox1.Focus() intentosfallidos = intentosfallidos + 1 TextBox2.Text = intentosfallidos '////////////// Static Dim iImage0 As Integer Select Case iImage0 Case 0 PictureBox1.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("C:UsersJessica.JorgeA1DocumentsVisual Studio 2005ProjectsWindowsApplication1WindowsApplication1PICTURESemoticon_onion_fantasmita_gifs_animado_msnanimal_com-27.gif") iImage0 += 1 Case 1 PictureBox1.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("C:UsersJessica.JorgeA1DocumentsVisual Studio 2005ProjectsWindowsApplication1WindowsApplication1PICTURESonionhead007_thumb.gif") iImage0 += 1 End Select End If End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim Random As New Random() Dim op2 As Integer = Random.Next(2, 10) Label6.Text = op2 '//// Timer2.Enabled = True End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim max As Integer = 4000 Dim rnd As New Random Dim rand As Integer = rnd.Next(10, max + 1) Dim i As Integer = 1 Dim number(max - 1) As Integer For i = 0 To max - 1 If number(i) = rand Then rand = rnd.Next(1, max + 1) i = -1 ElseIf number(i) = 0 Then number(i) = rand rand = rnd.Next(1, max + 1) If i = max - 1 Then Exit For End If i = -1 End If Next Timer1.Interval = number(i) i += 1 ChangeImage() End Sub Private Sub ChangeImage() Static Dim iImage1 As Integer Select Case iImage1 Case 0 PictureBox1.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("C:UsersJessica.JorgeA1DocumentsVisual Studio 2005ProjectsWindowsApplication1WindowsApplication1PICTUREScebollita_club_emoticon_yo_www.trucoslive.x10hosting.com.gif") iImage1 += 1 Case 1 PictureBox1.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("C:UsersJessica.JorgeA1DocumentsVisual Studio 2005ProjectsWindowsApplication1WindowsApplication1PICTURESonionhead003_thumb.gif") iImage1 += 1 Case 2 PictureBox1.Visible = True PictureBox1.Image = System.Drawing.Image.FromFile("C:UsersJessica.JorgeA1DocumentsVisual Studio 2005ProjectsWindowsApplication1WindowsApplication1PICTURESonionhead086_thumb.gif") iImage1 += 1 End Select End Sub Sub mostrarTiempo() Label7.Text = hora.ToString.PadLeft(2, "0") & ":" Label7.Text &= minuto.ToString.PadLeft(2, "0") & ":" Label7.Text &= segundo.ToString.PadLeft(2, "0") & ":" Label7.Text &= milisegundo.ToString.PadLeft(1, "0") Label7.Refresh() If Label7.Text = "00:02:00:0" And TextBox3.Text >= "10" Then MsgBox("Muy bien, ahora da click en continuar y podrás jugar", MsgBoxStyle.Information) ElseIf Label7.Text = "00:02:00:0" And TextBox3.Text = "8" Then MsgBox("Debes mejorar, da click en continuar y podrás jugar", MsgBoxStyle.Information) End If If Label7.Text > "00:02:00:0" And TextBox3.Text <= "7" Then MsgBox("Debes volver a repetirlas", MsgBoxStyle.Information) End If End Sub Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick milisegundo += 1 If milisegundo = 9 Then milisegundo = 0 segundo += 1 If segundo = 59 Then segundo = 0 minuto += 1 If minuto = 59 Then minuto = 0 hora += 1 End If End If End If mostrarTiempo() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If TextBox3.Text = "10" Or TextBox3.Text = "8" Then Shell("C:UsersJessica.JorgeA1DocumentsSAgta.exe", AppWinStyle.NormalFocus) End If Me.Hide() End Sub End Class
y al imagen de cada formulario la puse como adjunto s ellama img.
y otra cosita q tambien quisiera saber es saber como hacer para que la opcion de abrir un programa externo a visual me funciona ya q como puedes notar lo hago mediante, shell, quedando
--- Código: Visual Basic ---Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If TextBox3.Text = "10" Or TextBox3.Text = "8" Then Shell("C:UsersJessica.JorgeA1DocumentsSA", AppWinStyle.NormalFocus) End If Me.Hide() End Sub
Pero lo que sucede es que no pasa nada no abre nada, he intentado probando con programas pertenecientes a windows funciona muy bien, pero intento abrir uno distinto y no funciona q podria ser.
Gracias
gabio2:
Bueno, la verdad que para mí la solución ideal es cargar cualquier tabla (aleatoriamente) desde un solo formulario, pero bueno, lo que tú deseas lo puedes hacer con un Formulario padre (mdi) entonces hacer un Random.Next(1,10) [si tú tabla es del 1 al 10], entonces usar un swich (Select Case), y dependiendo de la respuesta del ramdon será el formulario que abras.. y al formulario principal le puedes dar un Me.Hide() para que lo esconda y jamáz se vea.
ejemplo:
--- Código: vb.net --- Select Case (Random.Next(1,10))case 1: Dim _formprov AS New FormTabla1 _formprov.MdiParent = Me _formprov.StartPosition = FormStartPosition.CenterScreen _formprov.Show()case2: ''' End Select
Recuerda a tu formulario principal ponerle la propiedad MdiParent como TRUE desde el diseñador.
ahora.. respondiendo tu segunda pregunta intenta usar :
--- Código: vb.net --- Process.Start()
Un saludo espero te sirva! :)
Jesmi89:
Hola, oye muchisimas gracias por tu respuesta, la primera excelente me funciono super bien, pero con respecto a la otra use process.start() como em sugeriste pero ocurre el mismo incoveniente, no abre nada.
A q crees q se deba? <_<
Navegación
[#] Página Siguiente
Ir a la versión completa