Vb.net 按钮必须单击两次才能发生第二个事件

Vb.net 按钮必须单击两次才能发生第二个事件,vb.net,Vb.net,我有一个程序,当点击按钮时会生成密码。按钮的代码如下所示: Private Sub generate_Click(sender As Object, e As EventArgs) Handles generate.Click Module1.firstname = firstnameb.Text Module1.surname = secondnameb.Text Module1.colour = colourb.Text Module1.dob = dobb.

我有一个程序,当点击按钮时会生成密码。按钮的代码如下所示:

Private Sub generate_Click(sender As Object, e As EventArgs) Handles generate.Click
    Module1.firstname = firstnameb.Text
    Module1.surname = secondnameb.Text
    Module1.colour = colourb.Text
    Module1.dob = dobb.Text
    Module1.dod = dodb.Text
    Module1.password = ((Mid$(Module1.firstname, 1, 1)) & (Mid$(Module1.surname, 1, 1)) & (Mid$(Module1.colour, 1, 1)) & (Mid$(Module1.dob, 1, 1)) & (Mid$(Module1.dod, 1, 1)))

    Timer1.Start()
    If ProgressBar1.Value < 100 Then
        ProgressBar1.Value += 1
    ElseIf ProgressBar1.Value = ProgressBar1.Maximum Then
        passwordresultb.Text = Module1.password

    End If


End Sub
Private-Sub-generate\u单击(发送方作为对象,e作为事件参数)处理生成。单击
Module1.firstname=firstnameb.Text
Module1.name=secondnameb.Text
Module1.color=colorB.Text
Module1.dob=dobb.Text
Module1.dod=dodb.Text
Module1.password=((Mid$(Module1.firstname,1,1))&(Mid$(Module1.names,1,1))&(Mid$(Module1.color,1,1))&(Mid$(Module1.dob,1,1))&(Mid$(Module1.dod,1,1)))
Timer1.Start()
如果ProgressBar1.值小于100,则
ProgressBar1.值+=1
ElseIf ProgressBar1.Value=ProgressBar1.max然后
passwordresultb.Text=Module1.password
如果结束
端接头
但是,我必须按两次按钮:一次是进度条,第二次是密码进入框中


任何帮助都将不胜感激。

当您单击按钮时,此方法将被调用一次。如果ProgressBar.Value小于100,则它将递增。否则,将使用密码更新文本框。由于您使用If..ElseIf模式,因此每次调用只会发生其中一个

鉴于提供的代码,您的意图不是很清楚。我不知道你是如何使用进度条的,也不知道为什么。但问题的根源是If..ElseIf语句。如果您只是想在单击按钮时在文本框中显示密码,请删除ProgressBar位并只更新文本框

如果您希望在显示密码之前将进度条更新为“最大值”,请尝试以下操作(我的VB有点生锈……但应该是这样):

而ProgressBar1.Value
您需要在计时器的
勾选事件中移动整个If块。

我猜
ProgressBar1.启动应用程序时,Value
0
,而
ProgressBar1.最大值是
1
ProgressBar1.Value
设置为
10
只是好奇-您是否尝试抛出进度条形码位于不同的子组件中,并从该子组件中简单调用它?什么是
ProgressBar1.最大值
?否,我要怎么做呢?我正在尝试制作一个密码生成器程序,其中进度条看起来像是在生成密码,然后出现密码。请注意,由于进度条的动画,如果应用程序在Vista/Windows 7下运行,这可能是不够的。文本将在动画结束前显示。这在按钮的单击事件中,并在windows 8.1下运行
While ProgressBar1.Value < ProgressBar1.MaximumValue
    ProgressBar.Value += 1
End While

passwordresultb.Text = Module1.password