有人可以幫我嗎?事情運行順利,但突然間,除錯停止,然后導致我出現此 ->錯誤
更糟糕的是,我試圖在一個新專案中再次進行整個設計和編碼,認為該問題只會出現在那個特定專案中。浪費了大約兩個小時。我把我的整個代碼放在這里,以防問題出在我的代碼中,這會很長,但請幫助我。我可能錯過了一些東西。
Imports System.Drawing.Text
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim pfc As PrivateFontCollection = New PrivateFontCollection
pfc.AddFontFile("digital-7 (italic).ttf")
Label2.Font = New Font(pfc.Families(0), 30, FontStyle.Regular)
Label2.ForeColor = Color.Black
Dim pfc2 As PrivateFontCollection = New PrivateFontCollection
pfc2.AddFontFile("digital-7.ttf")
Label1.Font = New Font(pfc2.Families(0), 26, FontStyle.Regular)
Label1.ForeColor = Color.Black
BtnCase.Hide()
BtnVer.Hide()
BtnOff.Hide()
BtnOn.Hide()
BtnExp.Hide()
BtnCube.Hide()
BtnFact.Hide()
BtnSqrt.Hide()
Num7.Hide()
Num8.Hide()
Num9.Hide()
BtnDel.Hide()
BtnAC.Hide()
Num4.Hide()
Num5.Hide()
Num6.Hide()
BtnMult.Hide()
BtnDiv.Hide()
Num1.Hide()
Num2.Hide()
Num3.Hide()
BtnAdd.Hide()
BtnSub.Hide()
Num0.Hide()
BtnPi.Hide()
BtnSqrd.Hide()
BtnDot.Hide()
BtnEql.Hide()
BtnUp.Hide()
BtnDown.Hide()
BtnLeft.Hide()
BtnRight.Hide()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Label2.Text = ""
Timer1.Enabled = False
End Sub
Private Sub ButtonClickMethod(sender As Object, e As EventArgs) Handles BtnCase.Click, BtnVer.Click, BtnOff.Click, BtnOn.Click, BtnExp.Click, BtnCube.Click, BtnFact.Click, BtnSqrt.Click, Num7.Click, Num8.Click, Num9.Click, BtnDel.Click, BtnAC.Click, Num4.Click, Num5.Click, Num6.Click, BtnMult.Click, BtnDiv.Click, Num1.Click, Num2.Click, Num3.Click, BtnAdd.Click, BtnSub.Click, Num0.Click, BtnPi.Click, BtnSqrd.Click, BtnDot.Click, BtnEql.Click, BtnUp.Click, BtnDown.Click, BtnLeft.Click, BtnRight.Click
Dim btn As Button = CType(sender, Button)
If btn.Name = "BtnCase" Then
Timer2.Enabled = True
BtnCase.Hide()
BtnVer.Hide()
BtnOff.Hide()
BtnOn.Hide()
BtnExp.Hide()
BtnCube.Hide()
BtnFact.Hide()
BtnSqrt.Hide()
Num7.Hide()
Num8.Hide()
Num9.Hide()
BtnDel.Hide()
BtnAC.Hide()
Num4.Hide()
Num5.Hide()
Num6.Hide()
BtnMult.Hide()
BtnDiv.Hide()
Num1.Hide()
Num2.Hide()
Num3.Hide()
BtnAdd.Hide()
BtnSub.Hide()
Num0.Hide()
BtnPi.Hide()
BtnSqrd.Hide()
BtnDot.Hide()
BtnEql.Hide()
BtnUp.Hide()
BtnDown.Hide()
BtnLeft.Hide()
BtnRight.Hide()
End If
If btn.Name = "BtnVer" Then
Label1.Text = ""
Label2.Text = "WE BARE BEARS"
End If
If btn.Name = "BtnOff" Then
Label1.Text = ""
Label2.Text = "CASEO"
Timer1.Enabled = True
BtnVer.Hide()
BtnOff.Hide()
BtnExp.Hide()
BtnCube.Hide()
BtnFact.Hide()
BtnSqrt.Hide()
Num7.Hide()
Num8.Hide()
Num9.Hide()
BtnDel.Hide()
BtnAC.Hide()
Num4.Hide()
Num5.Hide()
Num6.Hide()
BtnMult.Hide()
BtnDiv.Hide()
Num1.Hide()
Num2.Hide()
Num3.Hide()
BtnAdd.Hide()
BtnSub.Hide()
Num0.Hide()
BtnPi.Hide()
BtnSqrd.Hide()
BtnDot.Hide()
BtnEql.Hide()
BtnUp.Hide()
BtnDown.Hide()
BtnLeft.Hide()
BtnRight.Hide()
End If
If btn.Name = "BtnOn" Then
Label1.Text = ""
Label2.Text = 0
BtnVer.Show()
BtnOff.Show()
BtnExp.Show()
BtnCube.Show()
BtnFact.Show()
BtnSqrt.Show()
Num7.Show()
Num8.Show()
Num9.Show()
BtnDel.Show()
BtnAC.Show()
Num4.Show()
Num5.Show()
Num6.Show()
BtnMult.Show()
BtnDiv.Show()
Num1.Show()
Num2.Show()
Num3.Show()
BtnAdd.Show()
BtnSub.Show()
Num0.Show()
BtnPi.Show()
BtnSqrd.Show()
BtnDot.Show()
BtnEql.Show()
BtnUp.Show()
BtnDown.Show()
BtnLeft.Show()
BtnRight.Show()
End If
If btn.Name = "BtnExp" Then
Label1.Text = Label1.Text "^"
End If
If btn.Name = "BtnCube" Then
Label1.Text = Label1.Text "^3"
End If
If btn.Name = "BtnFact" Then
Label1.Text = Label1.Text "!"
End If
If btn.Name = "BtnSqrt" Then
Label1.Text = Label1.Text "√"
End If
If btn.Name = "Num7" Then
Label1.Text = Label1.Text "7"
End If
If btn.Name = "Num8" Then
Label1.Text = Label1.Text "8"
End If
If btn.Name = "Num9" Then
Label1.Text = Label1.Text "9"
End If
If btn.Name = "BtnDel" Then
' Label1.Text = Label1.Text "="
End If
If btn.Name = "BtnAC" Then
' Label1.Text = Label1.Text "="
End If
If btn.Name = "Num4" Then
Label1.Text = Label1.Text "4"
End If
If btn.Name = "Num5" Then
Label1.Text = Label1.Text "5"
End If
If btn.Name = "Num6" Then
Label1.Text = Label1.Text "6"
End If
If btn.Name = "BtnMult" Then
Label1.Text = Label1.Text "×"
End If
If btn.Name = "BtnDiv" Then
Label1.Text = Label1.Text "÷"
End If
If btn.Name = "Num1" Then
Label1.Text = Label1.Text "1"
End If
If btn.Name = "Num2" Then
Label1.Text = Label1.Text "2"
End If
If btn.Name = "Num3" Then
Label1.Text = Label1.Text "3"
End If
If btn.Name = "BtnAdd" Then
Label1.Text = Label1.Text " "
End If
If btn.Name = "BtnSub" Then
Label1.Text = Label1.Text "-"
End If
If btn.Name = "Num0" Then
Label1.Text = Label1.Text "0"
End If
If btn.Name = "BtnPi" Then
Label1.Text = Label1.Text "π"
End If
If btn.Name = "BtnSqrd" Then
Label1.Text = Label1.Text "^2"
End If
If btn.Name = "BtnDot" Then
Label1.Text = Label1.Text "."
End If
If btn.Name = "BtnEql" Then
Label1.Text = Label1.Text "="
End If
If btn.Name = "BtnUp" Then
End If
If btn.Name = "BtnDown" Then
End If
If btn.Name = "BtnLeft" Then
End If
If btn.Name = "BtnRight" Then
End If
End Sub
Private Const INCREMENT As Integer = 9
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
If PictureBox1.Location.Y >= 1050 Then
Timer2.Enabled = False
BtnCase.Show()
BtnOn.Show()
Else
PictureBox1.Location = New Point(PictureBox1.Location.X, PictureBox1.Location.Y INCREMENT)
End If
End Sub
Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
Timer2.Enabled = True
End Sub
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
If PictureBox1.Location.Y <= 0 Then
Timer3.Enabled = False
Else
PictureBox1.Location = New Point(PictureBox1.Location.X, PictureBox1.Location.Y - INCREMENT)
End If
End Sub
End Class
uj5u.com熱心網友回復:
盡量不要重復代碼。這些長串列中Control.Hide()有兩個是相同的,第三個僅在 2 個控制元件(BtnCase和BtnOn)上有所不同。我已將所有這些提取到一個名為HideControls.
的簡寫Label1.Text = Label1.Text & "="是Label1.Text &= "=".
Select Case比所有這些If陳述句更容易閱讀和撰寫。
您的錯誤的實際解決方案是在Font建構式中。第二個引數需要一個Single. 當您為此引數輸入文字 30 和 26 時,編譯器會將其識別為Int32( Integer)。啊! 錯誤訊息提到的型別不匹配(引數例外)。您可以通過F在數字后立即添加一個來更正此問題。它將重新格式化為30.0和26.0并且編譯器會將數字識別為Single.
數字就是數字并且Strings是Text。您試圖分配0給一個Text屬性。這不會使用 Option Strict On 編譯,而 Option Strict On 總是應該的。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim pfc As PrivateFontCollection = New PrivateFontCollection
pfc.AddFontFile("digital-7 (italic).ttf")
Label2.Font = New Font(pfc.Families(0), 30.0F, FontStyle.Regular)
Label2.ForeColor = Color.Black
Dim pfc2 As PrivateFontCollection = New PrivateFontCollection
pfc2.AddFontFile("digital-7.ttf")
Label1.Font = New Font(pfc2.Families(0), 26.0F, FontStyle.Regular)
Label1.ForeColor = Color.Black
BtnCase.Hide()
BtnOn.Hide()
HideControls()
End Sub
Private Sub ButtonClickMethod(sender As Object, e As EventArgs) Handles BtnCase.Click, BtnVer.Click, BtnOff.Click, BtnOn.Click, BtnExp.Click, BtnCube.Click, BtnFact.Click, BtnSqrt.Click, Num7.Click, Num8.Click, Num9.Click, BtnDel.Click, BtnAC.Click, Num4.Click, Num5.Click, Num6.Click, BtnMult.Click, BtnDiv.Click, Num1.Click, Num2.Click, Num3.Click, BtnAdd.Click, BtnSub.Click, Num0.Click, BtnPi.Click, BtnSqrd.Click, BtnDot.Click, BtnEql.Click, BtnUp.Click, BtnDown.Click, BtnLeft.Click, BtnRight.Click
Dim btn As Button = CType(sender, Button)
Select Case btn.Name
Case "BtnCase"
Timer2.Enabled = True
BtnCase.Hide()
BtnOn.Hide()
HideControls()
Case "BtnVer"
Label1.Text = ""
Label2.Text = "WE BARE BEARS"
Case "BtnOff"
Label1.Text = ""
Label2.Text = "CASEO"
Timer1.Enabled = True
HideControls()
Case "BtnOn"
Label1.Text = ""
Label2.Text = 0
BtnVer.Show()
BtnOff.Show()
BtnExp.Show()
BtnCube.Show()
BtnFact.Show()
BtnSqrt.Show()
Num7.Show()
Num8.Show()
Num9.Show()
BtnDel.Show()
BtnAC.Show()
Num4.Show()
Num5.Show()
Num6.Show()
BtnMult.Show()
BtnDiv.Show()
Num1.Show()
Num2.Show()
Num3.Show()
BtnAdd.Show()
BtnSub.Show()
Num0.Show()
BtnPi.Show()
BtnSqrd.Show()
BtnDot.Show()
BtnEql.Show()
BtnUp.Show()
BtnDown.Show()
BtnLeft.Show()
BtnRight.Show()
Case "BtnExp"
Label1.Text &= "^"
Case "BtnCube"
Label1.Text &= "^3"
Case "BtnFact"
Label1.Text &= "!"
Case "BtnSqrt"
Label1.Text &= "√"
Case "Num7"
Label1.Text &= "7"
Case "Num8"
Label1.Text &= "8"
Case "Num9"
Label1.Text &= "9"
Case "Num4"
Label1.Text &= "4"
Case "Num5"
Label1.Text &= "5"
Case "Num6"
Label1.Text &= "6"
Case "BtnMult"
Label1.Text &= "×"
Case "BtnDiv"
Label1.Text &= "÷"
Case "Num1"
Label1.Text &= "1"
Case "Num2"
Label1.Text &= "2"
Case "Num3"
Label1.Text &= "3"
Case "BtnAdd"
Label1.Text &= " "
Case "BtnSub"
Label1.Text &= "-"
Case "Num0"
Label1.Text &= "0"
Case "BtnPi"
Label1.Text &= "π"
Case "BtnSqrd"
Label1.Text &= "^2"
Case "BtnDot"
Label1.Text &= "."
Case "BtnEql"
Label1.Text &= "="
End Select
End Sub
Private Sub HideControls()
BtnVer.Hide()
BtnOff.Hide()
BtnExp.Hide()
BtnCube.Hide()
BtnFact.Hide()
BtnSqrt.Hide()
Num7.Hide()
Num8.Hide()
Num9.Hide()
BtnDel.Hide()
BtnAC.Hide()
Num4.Hide()
Num5.Hide()
Num6.Hide()
BtnMult.Hide()
BtnDiv.Hide()
Num1.Hide()
Num2.Hide()
Num3.Hide()
BtnAdd.Hide()
BtnSub.Hide()
Num0.Hide()
BtnPi.Hide()
BtnSqrd.Hide()
BtnDot.Hide()
BtnEql.Hide()
BtnUp.Hide()
BtnDown.Hide()
BtnLeft.Hide()
BtnRight.Hide()
End Sub
如果Tag在設計時將處理的每個按鈕的屬性設定為適當的字串,則可以節省大量代碼。將按鈕設定""為String.Empty。我們需要 ,.ToString因為該Tag屬性是Object。
該ShowControls方法不保存任何輸入,但使按鈕單擊代碼更清晰。
Private Sub ButtonClickMethod(sender As Object, e As EventArgs) Handles BtnCase.Click, BtnVer.Click, BtnOff.Click, BtnOn.Click, BtnExp.Click, BtnCube.Click, BtnFact.Click, BtnSqrt.Click, Num7.Click, Num8.Click, Num9.Click, BtnDel.Click, BtnAC.Click, Num4.Click, Num5.Click, Num6.Click, BtnMult.Click, BtnDiv.Click, Num1.Click, Num2.Click, Num3.Click, BtnAdd.Click, BtnSub.Click, Num0.Click, BtnPi.Click, BtnSqrd.Click, BtnDot.Click, BtnEql.Click, BtnUp.Click, BtnDown.Click, BtnLeft.Click, BtnRight.Click
Dim btn As Button = CType(sender, Button)
Label1.Text = btn.Tag.ToString
Select Case btn.Name
Case "BtnCase"
Timer2.Enabled = True
BtnCase.Hide()
BtnOn.Hide()
HideControls()
Case "BtnVer"
Label2.Text = "WE BARE BEARS"
Case "BtnOff"
Label2.Text = "CASEO"
Timer1.Enabled = True
HideControls()
Case "BtnOn"
Label2.Text = "0"
ShowControls()
End Select
End Sub
Private Sub ShowControls()
BtnVer.Show()
BtnOff.Show()
BtnExp.Show()
BtnCube.Show()
BtnFact.Show()
BtnSqrt.Show()
Num7.Show()
Num8.Show()
Num9.Show()
BtnDel.Show()
BtnAC.Show()
Num4.Show()
Num5.Show()
Num6.Show()
BtnMult.Show()
BtnDiv.Show()
Num1.Show()
Num2.Show()
Num3.Show()
BtnAdd.Show()
BtnSub.Show()
Num0.Show()
BtnPi.Show()
BtnSqrd.Show()
BtnDot.Show()
BtnEql.Show()
BtnUp.Show()
BtnDown.Show()
BtnLeft.Show()
BtnRight.Show()
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/320896.html
