|
|
|
|
Ultra Member
|
|
Apr 1, 2009, 09:02 AM
|
|
repeating issues
hello
I can't figure out how to get part of my form to repeat
this is what I have at the moment:
Public Class Form5
Dim randomnum As New Random
Dim iNum1 As Integer
Dim iNum2 As Integer
Dim iNum3 As Integer
Dim iNum4 As Integer
Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
iNum1 = randomnum.Next(1, 301)
iNum2 = randomnum.Next(1, 301)
iNum3 = randomnum.Next(1, 301)
iNum4 = randomnum.Next(1, 301)
Label2.Text = pupilName
Label4.Text = iNum1
Label6.Text = iNum2
Label8.Text = iNum3
Label10.Text = iNum4
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'create random numbers all over again for questions 5 times over'
For I = 0 To 5
Me.Form5_Load()
Next
Form6.ShowDialog()
End Sub
Private Sub Question1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Question1.TextChanged
If iNum1 + iNum2 = CInt(Question1.Text) Then
Total = Total + 1
End If
End Sub
Private Sub Question2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Question2.TextChanged
If iNum3 - iNum4 = CInt(Question2.Text) Then
Total = Total + 1
End If
End Sub
End Class
I am trying to get get the random numbers to regenerate again after the button is clicked, I want it to do this 5 times, before moving onto the next form.
also every time the button is clicked if the answers to the questions are right I want to add 1 to their total score.
any help or hints would be greatly appreciated
thanks :)
|
|
|
Ultra Member
|
|
Apr 1, 2009, 09:18 AM
|
|
right I've sused out how to get the random numbers to regenerate but now I'm stuck on getting it to only do it 5 times before moving on to the next form:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'create random numbers all over again for questions 5 times over'
For I = 0 To 5
iNum1 = randomnum.Next(1, 301)
iNum2 = randomnum.Next(1, 301)
iNum3 = randomnum.Next(1, 301)
iNum4 = randomnum.Next(1, 301)
Label4.Text = iNum1
Label6.Text = iNum2
Label8.Text = iNum3
Label10.Text = iNum4
Next
'Form6.ShowDialog()'
'Me.Close()'
End Sub
|
|
|
Ultra Member
|
|
Apr 2, 2009, 05:08 AM
|
|
I'm a little unsure of what you're trying to do, but I think what is happening is that you're effectively recreating the form each time you call Form5_Load. You probably need to insert a "Randomize" call somewhere early in your code. This generates a "seed" to make sure the series of random numbers doesn't repeat.
Put Randomize() at the top of your "Loadit" function and see if that doesn't work. If not, post again and I'll help you out.
By the way, what version of Visual Basic are you using?
===========
What are you trying to get to repeat 5 times?
You should be able to keep a class-level variable to keep a count of the number of times it repeats. You can use that variable to prevent the program from closing (FormClosing event, or its equivalent in the version of VB you are using) until the five repeats are accomplished.
|
|
|
Ultra Member
|
|
Apr 2, 2009, 09:18 AM
|
|
this is now what it looks like (im not sure where you want me to put the randomise?)
Public Class Form5
Dim randomnum As New Random
Dim iNum1 As Integer
Dim iNum2 As Integer
Dim iNum3 As Integer
Dim iNum4 As Integer
Dim I As Integer
Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
iNum1 = randomnum.Next(1, 301)
iNum2 = randomnum.Next(1, 301)
iNum3 = randomnum.Next(1, 301)
iNum4 = randomnum.Next(1, 301)
Label4.Text = iNum1
Label6.Text = iNum2
Label8.Text = iNum3
Label10.Text = iNum4
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'create random numbers all over again for questions 5 times over'
Question1.Clear()
Question2.Clear()
For I = 1 To 5
If I < 6 Then
iNum1 = randomnum.Next(1, 301)
iNum2 = randomnum.Next(1, 301)
iNum3 = randomnum.Next(1, 301)
iNum4 = randomnum.Next(1, 301)
Label4.Text = iNum1
Label6.Text = iNum2
Label8.Text = iNum3
Label10.Text = iNum4
Else
Form6.ShowDialog()
Me.Close()
End If
Next I
End Sub
Private Sub Question1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Question1.TextChanged
If iNum1 + iNum2 = CInt(Question1.Text) Then
Total = Total + 1
End If
End Sub
Private Sub Question2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Question2.TextChanged
If iNum3 - iNum4 = CInt(Question2.Text) Then
Total = Total + 1
End If
End Sub
End Class
I'm using visual studio 05 so I guess its VB 05 then.
I'm trying to get the user to click the button to refresh the numbers(in the labels) so that they can do more sums, I want this to repeat a maximum of 5 times before going onto the next form
I also want to add 1 to the total each time they got a question right, so I can show it at the end(not sure how to do this either but first things irst)
|
|
|
Ultra Member
|
|
Apr 2, 2009, 06:53 PM
|
|
Put the Randomize statement in the Form5_Load subroutine. Take everything else out of that subroutine and put it in a separate subroutine like this:
Private Sub GenerateRandom()
iNum1 = randomnum.Next(1, 301)
iNum2 = randomnum.Next(1, 301)
iNum3 = randomnum.Next(1, 301)
iNum4 = randomnum.Next(1, 301)
Label2.Text = pupilName
Label4.Text = iNum1
Label6.Text = iNum2
Label8.Text = iNum3
Label10.Text = iNum4
End Sub
Declare a class-level variable, Counter
Dim Counter as integer
In Form5_Load, call this subroutine. Form5_Load will look like this:
Private Sub Form5_Load
Randomize
Counter = 0 ' this will zero the counter each time the form is loaded.
GenerateRandom
End Sub
In Button1_Click, call GenerateRandom
Private Sub Button1_Click
if Counter < 5 then
Question1.Clear()
Question2.Clear()
GenerateRandom
Counter = Counter + 1 ' Count the number of times that he clicks here.
Else
Form6.ShowDialog
Close
' Do what you want to do after the counter = 5
End If
End Sub
Each time the button is pressed, Button1_Click is called. That will clear the questions and Generate the random values. It's a little more professional to put that in a separate subroutine and call that from various places. Calling Form5_Load several times isn't "good form". You should only put things in the "Form Load" subroutine that are needed when the form actually loads.
It might be better to call "Form6.ShowDialog" from the same place that Form5 is called, rather than calling it from Form5. If Form5 is called as a "modal" window (ShowDialog) you'll have something like this: (the right-side of the comparison isn't correct syntax, but I don't have VB loaded and I can't remember what the Dialog Result constants are. This is more VB.NET-like. Hopefully, you'll understand. If you really need the constants, I can look them up for you.)
If Form5.ShowDialog = DialogResult.OK then
Form6.ShowDialog
End If
|
|
Question Tools |
Search this Question |
|
|
Check out some similar questions!
Count in excel excluding repeating numbers
[ 1 Answers ]
Is there a way for me to count in a column and exclude numbers that repeat? I am working a spreadsheet with account numbers and need to count how many account numbers... the problem is that some of them repeat within the spreadsheet. Can someone help?
Thanks in advance!
Repeating the same mistake
[ 4 Answers ]
I have a problem which has I've repeated all my life.
I just split from a girl after 4 years. The relationship was very volatile, passionate, but ultimately , unhealthy and going nowhere. But we both love each other.
After ending it, and making that descison, I have massive regret, now wanting...
Repeating
[ 3 Answers ]
How many different ways can 8 letters be grouped with no letter being repeated?
A Repeating Application Error Message.
[ 2 Answers ]
FONT-Courier NewSIZE=3COLOR=SlateGrey :confused:
SUBJECT: A Repeating application error message.
1. Description of the problem:
Several times a day while I'm working at my computer,
the following occurs. I click on an icon
or try the use Mozilla FireFox v1.0.2.
The...
View more questions
Search
|