本文介绍了错误:对象引用未设置为对象的实例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个程序:翻转图像"
来源:
I have a program : " flip images"
Source :
Imports System.IO
Public Class Form1
Dim khoa As Boolean
Dim danhsachbt(6) As Button
Dim dshinh(6) As Image
Dim ds1(6), ds2(6), clicks, sott(2), s As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
danhsachbt(1) = Button1
danhsachbt(2) = Button2
danhsachbt(3) = Button3
danhsachbt(4) = Button4
danhsachbt(5) = Button5
danhsachbt(6) = Button6
Label1.Text = 40
NewGame()
''
End Sub
Public Sub Image()
dshinh(ds1(1)) = My.Resources.a
dshinh(ds1(2)) = My.Resources.a
ds2(ds1(1)) = 1
ds2(ds1(2)) = 1
dshinh(ds1(3)) = My.Resources.b
dshinh(ds1(4)) = My.Resources.b
ds2(ds1(3)) = 2
ds2(ds1(4)) = 2
dshinh(ds1(5)) = My.Resources.c
dshinh(ds1(6)) = My.Resources.c
ds2(ds1(5)) = 3
ds2(ds1(6)) = 3
End Sub
Public Sub LoadBT()
For i As Integer = 1 To 6
danhsachbt(i).Visible = True
Next
End Sub
Public Sub NewGame()
Dim i, j, Rand As Integer
clicks = 0
For i = 1 To 6
danhsachbt(i).Image = Nothing
Next
For i = 1 To 6
A1:
Randomize()
Rand = Int(6 * Rnd() + 1)
'Kt neu co rui thi lam lai
For j = 1 To i - 1
If Rand = ds1(j) Then GoTo A1
Next
ds1(i) = Rand
Next
Image()
LoadBT()
ProgressBar1.Maximum = Label1.Text
ProgressBar1.Value = ProgressBar1.Maximum
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If khoa = False Then Exit Sub
If sott(1) = 1 Then Exit Sub
clicks += 1
sott(clicks) = 1
Button1.Image = dshinh(1)
If clicks = 2 Then Timer1.Enabled = True
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If khoa = False Then Exit Sub
If sott(1) = 2 Then Exit Sub
clicks += 1
sott(clicks) = 2
Button2.Image = dshinh(2)
If clicks = 2 Then Timer1.Enabled = True
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
If khoa = False Then Exit Sub
If sott(1) = 3 Then Exit Sub
clicks += 1
sott(clicks) = 3
Button3.Image = dshinh(3)
If clicks = 2 Then Timer1.Enabled = True
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
If khoa = False Then Exit Sub
If sott(1) = 4 Then Exit Sub
clicks += 1
sott(clicks) = 4
Button4.Image = dshinh(4)
If clicks = 2 Then Timer1.Enabled = True
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
If khoa = False Then Exit Sub
If sott(1) = 5 Then Exit Sub
clicks += 1
sott(clicks) = 5
Button5.Image = dshinh(5)
If clicks = 2 Then Timer1.Enabled = True
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
If khoa = False Then Exit Sub
If sott(1) = 6 Then Exit Sub
clicks += 1
sott(clicks) = 6
Button6.Image = dshinh(6)
If clicks = 2 Then Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If clicks = 1 Then Exit Sub
'KT hinh giong nhau
If ds2(sott(1)) = ds2(sott(2)) Then
danhsachbt(sott(2)).Visible = False
danhsachbt(sott(1)).Visible = False
MsgBox("co gang")
'KT ket thuc game
Dim i As Integer
Dim Match As Boolean = True
For i = 1 To 6
If danhsachbt(i).Visible = True Then
Match = False
Exit For
End If
Next
If Match = True And TextBox1.Text > 0 Then
Timer2.Stop()
ProgressBar1.Visible = True
MsgBox("Chuc Mung! Ban Da Chien Thang", , "Thong Bao")
End If
Else
danhsachbt(sott(1)).Image = Nothing
danhsachbt(sott(2)).Image = Nothing
End If
sott(1) = 0
sott(2) = 0
clicks = 0
End Sub
Dim check As Boolean
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
ProgressBar1.Visible = False
TextBox1.Text = Label1.Text
s = TextBox1.Text
khoa = True
NewGame()
Timer2.Start()
check = True
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
TextBox1.Text = s - 1
If ProgressBar1.Value <= ProgressBar1.Maximum And ProgressBar1.Value > 0 Then
ProgressBar1.Value -= 1
Else
ProgressBar1.Value = 0
End If
s = s - 1
If s = 0 Then
Timer2.Stop()
ProgressBar1.Visible = True
MsgBox("Het Thoi Gian! Ban Da Thua", , "Thong Bao")
khoa = False
End If
End Sub
End Class
在此出现错误对象引用未设置为对象的实例": danhsachbt(sott(2)).Visible = False
请帮助我!
There is an error "Object reference not set to an instance of an object" in this : danhsachbt(sott(2)).Visible = False
Please help me !
推荐答案
danhsachbt(1) = Button1
danhsachbt(2) = Button2
danhsachbt(3) = Button3
danhsachbt(4) = Button4
danhsachbt(5) = Button5
danhsachbt(6) = Button6
将上面的代码更改为
Change above code to
danhsachbt(0) = Button6
danhsachbt(1) = Button1
danhsachbt(2) = Button2
danhsachbt(3) = Button3
danhsachbt(4) = Button4
danhsachbt(5) = Button5
您还需要根据需要进行适当的更改,我的意思是现在您必须从0到5而不是1到6循环.
问候
鲁西(Rushi)
you also need to make appropriate changes where required, I mean now you have to loop from 0 to 5 not 1 to 6.
Regards
Rushi
这篇关于错误:对象引用未设置为对象的实例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!