CLR: .Net / Mono / Boo / Otros CLR > VB .NET

 Cargar formularios de forma aleatoria

(1/2) > >>

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

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa