我是vb的新手,我有3个文本框,当用户点击表单中的特定按钮时,我想将其设置为随机值:
这是代码:
Private Sub cmdjouer_Click(Index As Integer)
txt1 = Math.Randomize(9)
txt2 = Math.Randomize(9)
txt3 = Math.Randomize(9)
End Sub
我收到以下错误
expected function or variable
我确信问题在于随机化函数。
任何想法都将受到赞赏
答案 0 :(得分:10)
您将VB.NET与VB6混淆。它们彼此截然不同。将来,当您在线查找示例,文档和帮助时,请务必指定VB6以确保您正在使用正确的语言。它们本质上是两种完全不同的语言。
在VB6中,您需要使用Randomize
函数初始为随机数生成器播种。然后,要生成随机数,您必须使用Rnd
函数,例如:
Private Sub cmdjouer_Click(Index As Integer)
Randomize()
txt1.Text = Int((Rnd * 9) + 1)
txt2.Text = Int((Rnd * 9) + 1)
txt3.Text = Int((Rnd * 9) + 1)
End Sub
Math.Randomize
是智能个人对象技术(SPOT)命名空间中的一种方法。我怀疑这是你真正想要的。您可能只想使用System.Random
类,如下所示:
Private Sub cmdjouer_Click(sender As Object, e As EventArgs) Handles cmdjouer.Click
Dim r As New Random()
txt1.Text = r.Next(9).ToString()
txt2.Text = r.Next(9).ToString()
txt3.Text = r.Next(9).ToString()
End Sub
正如其他人所指出的那样,您不希望将文本框引用变量设置为数字(例如txt1 = ...
)。您需要设置文本框的Text
属性。
另外,正如下面的评论中所指出的,我调用了Randomize
或在按钮的New Random
事件中创建了Click
对象。我这样做是为了简化示例,但实际上,这将是不好的做法。在任何一种情况下,理想情况下,随机数发生器的播种应该只发生一次,通常是在应用程序启动时。通过每次重新播种发生器,可以使结果更不随机。
答案 1 :(得分:2)
Microsoft.SPOT.Math.Randomize
说:
为随机数生成设置随机起点。
因此它不生成随机数,它初始化生成器。你想要Microsoft.SPOT.Math.Random
。但更好的是,使用上级Random
class生成随机数。
然而,代码有更多问题。正如Constanta在评论中提到的那样,txt1
等可能是文本框,因此您需要更改分配以说txt1.Text = …
等。但是,这仍然是仍然错误代码并赢得了用Option Strict On
编译。 Which should always be On
.所以你需要手动转换,留下这段代码:
Dim rng As New Random()
txt1.Text = rng.Next(9).ToString()
txt2.Text = rng.Next(9).ToString()
txt3.Text = rng.Next(9).ToString()
答案 2 :(得分:2)
试试这个
' Initialize the random-number generator.
Randomize()
' Generate random value between 1 and 6.
Dim value As Integer = CInt(Int((6 * Rnd()) + 1)) txt1.text = cstr(value)