Vb.net 使用9+;数字

Vb.net 使用9+;数字,vb.net,Vb.net,我一直在研究像thigny这样的条形码。它使用颜色将数字写入图像。不管怎样,每次我使用9个以上的数字时,它都表示OverFlowException未处理。也许我的代码漏掉了什么。大部分都是我的代码,除了关于TextBox1按键的代码。这是密码 Public Class Form1 Dim NumberLength As Integer = 1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) H

我一直在研究像thigny这样的条形码。它使用颜色将数字写入图像。不管怎样,每次我使用9个以上的数字时,它都表示OverFlowException未处理。也许我的代码漏掉了什么。大部分都是我的代码,除了关于TextBox1按键的代码。这是密码

Public Class Form1

Dim NumberLength As Integer = 1

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles     Button1.Click
    If Button2.Text = "..." Then
        MsgBox("Place select where you want your Color Code to be saved")
    Else
            Dim BMP As New Drawing.Bitmap(19, 10)
            BMP = Create(TextBox1.Text)
            Dim NewBMP As New Drawing.Bitmap(NumberLength, 1)
            NewBMP = BMP
            NewBMP.Save(Button2.Text)
        End If
End Sub

Public Function Create(ByVal Number As Int32) As Bitmap
    Dim StringNumber = Number.ToString
    Dim NumberLength = StringNumber.Length
    Dim ColorCode As New Drawing.Bitmap((NumberLength), 1)
    Dim GFX As Graphics = Graphics.FromImage(ColorCode)

    For i As Integer = 1 To NumberLength
        Dim CurrentNumber As Integer = StringNumber.Substring(i - 1, 1)
        GFX.FillRectangle(New SolidBrush(ReturnRGBValue(CurrentNumber)), i, 0, 1, 1)
        If i = (NumberLength + 1) Then
            Exit For
        End If
    Next

    Return ColorCode
End Function

Public Function ReturnRGBValue(ByVal Number As Integer) As Color
    Dim Color As New Color
    If Number = 1 Then
        Color = Color.FromArgb(255, 255, 255)
    ElseIf Number = 2 Then
        Color = Color.FromArgb(245, 245, 245)
    ElseIf Number = 3 Then
        Color = Color.FromArgb(235, 235, 235)
    ElseIf Number = 4 Then
        Color = Color.FromArgb(225, 225, 225)
    ElseIf Number = 5 Then
        Color = Color.FromArgb(215, 215, 215)
    ElseIf Number = 6 Then
        Color = Color.FromArgb(205, 205, 205)
    ElseIf Number = 7 Then
        Color = Color.FromArgb(195, 195, 195)
    ElseIf Number = 8 Then
        Color = Color.FromArgb(185, 185, 185)
    ElseIf Number = 9 Then
        Color = Color.FromArgb(175, 175, 175)
    ElseIf Number = 0 Then
        Color = Color.FromArgb(165, 165, 165)
    End If

    Return Color
End Function

Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    Dim Save As New SaveFileDialog
    Save.Filter = "PNG |*.png |JPG |*.jpg |GIF |*.gif"
    Save.ShowDialog()
    Button2.Text = Save.FileName
End Sub

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress

    '97 - 122 = Ascii codes for simple letters
    '65 - 90  = Ascii codes for capital letters
    '48 - 57  = Ascii codes for numbers

    If Asc(e.KeyChar) <> 8 Then
        If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
            e.Handled = True
        End If
    End If

End Sub


End Class
公共类表单1
Dim NumberLength作为整数=1
私有子按钮1\u单击(发送者作为System.Object,e作为System.EventArgs)处理按钮1。单击
如果Button2.Text=“…”则
MsgBox(“放置选择您希望保存颜色代码的位置”)
其他的
将BMP调整为新图形。位图(19,10)
BMP=创建(TextBox1.Text)
将新位图作为新图形进行调暗。位图(数字长度,1)
NewBMP=BMP
NewBMP.Save(按钮2.Text)
如果结束
端接头
公共函数创建(ByVal编号为Int32)为位图
Dim StringNumber=Number.ToString
Dim NumberLength=StringNumber.Length
作为新绘图的暗淡颜色代码。位图((数字长度),1)
Dim GFX As Graphics=Graphics.FromImage(彩色代码)
对于i,整数=1到NumberLength
Dim CurrentNumber As Integer=StringNumber.Substring(i-1,1)
GFX.FillRectangle(新的SolidBrush(ReturnRGBValue(CurrentNumber)),i,0,1,1)
如果i=(NumberLength+1),则
退出
如果结束
下一个
返回色码
端函数
公共函数返回rgbValue(ByVal数为整数)作为颜色
暗淡的颜色是新的颜色
如果数字=1,则
Color=Color.FromArgb(255,255,255)
ElseIf数=2,则
Color=Color.FromArgb(245245245245)
ElseIf数=3那么
Color=Color.FromArgb(235,235,235)
ElseIf数=4那么
颜色=颜色。来自argb(225225225)
ElseIf数=5,则
Color=Color.FromArgb(215215215215)
ElseIf数=6那么
颜色=颜色。来自argb(205205205)
ElseIf数=7那么
颜色=颜色。来自argb(195195195195195)
ElseIf数=8那么
颜色=颜色。来自argb(185185185185)
ElseIf数=9那么
Color=Color.FromArgb(175175175)
ElseIf Number=0,则
Color=Color.FromArgb(165,165,165)
如果结束
返回颜色
端函数
私有子按钮2\u单击(发送者作为System.Object,e作为System.EventArgs)处理按钮2。单击
Dim另存为新保存文件对话框
Save.Filter=“PNG |*.PNG | JPG |*.JPG | GIF |*.GIF”
Save.ShowDialog()
Button2.Text=Save.FileName
端接头
私有子textbox1keypress(ByVal sender作为对象,ByVal e作为System.Windows.Forms.KeyPressEventArgs)处理TextBox1.KeyPress
'97-122=简单字母的Ascii码
'65-90=大写字母的Ascii码
'48-57=数字的Ascii码
如果Asc(e.KeyChar)8,则
如果Asc(e.KeyChar)<48或Asc(e.KeyChar)>57,则
e、 已处理=真
如果结束
如果结束
端接头
末级

您的参数被声明为
Int32

The valid range of an Integer variable is -2147483648 through +2147483647.
Dim k As Integer
The following statement causes an error because the value is too large.
k = 2147483648

可以存储在Int32(根据MSDN)十进制中的最大值2147483647(十六进制值
0x7FFFFF

您的参数声明为
Int32

The valid range of an Integer variable is -2147483648 through +2147483647.
Dim k As Integer
The following statement causes an error because the value is too large.
k = 2147483648

可以存储在Int32(根据MSDN)十进制中的最大值2147483647(十六进制值
0x7FFFFF

您的参数声明为
Int32

The valid range of an Integer variable is -2147483648 through +2147483647.
Dim k As Integer
The following statement causes an error because the value is too large.
k = 2147483648

可以存储在Int32(根据MSDN)十进制中的最大值2147483647(十六进制值
0x7FFFFF

您的参数声明为
Int32

The valid range of an Integer variable is -2147483648 through +2147483647.
Dim k As Integer
The following statement causes an error because the value is too large.
k = 2147483648
可存储在Int32(根据MSDN)十进制中的最大值2147483647(十六进制值
0x7FFFFF

您使用的是Integer,因此如果它的值为9,则其溢出,请尝试使用
Long
数据类型

您使用的是Integer,因此如果它的值为9,则其溢出,请尝试使用
Long
数据类型

您使用的是Integer,因此如果它的值为9,则其溢出,请尝试使用
Long
数据类型


您使用的是Integer,因此如果它的值为9,则其溢出,请尝试使用
Long
数据类型。

谢谢,我决定将Int改为字符串。它仍然工作得很好,可以处理大数字!谢谢,我决定把Int改成字符串。它仍然工作得很好,可以处理大数字!谢谢,我决定把Int改成字符串。它仍然工作得很好,可以处理大数字!谢谢,我决定把Int改成字符串。它仍然工作得很好,可以处理大数字!谢天谢地,就像斯宾塞说的,我把整数改成了字符串,所以它解决了问题!哈哈。很高兴它有帮助,现在很高兴知道正确的值类型和检查它的范围对于我们的程序是非常重要的。谢谢,伙计,正如斯宾塞所说的,我把整数改成了字符串,所以它解决了问题!哈哈。很高兴它有帮助,现在很高兴知道正确的值类型和检查它的范围对于我们的程序是非常重要的。谢谢,伙计,正如斯宾塞所说的,我把整数改成了字符串,所以它解决了问题!哈哈。很高兴它有帮助,现在很高兴知道正确的值类型和检查它的范围对于我们的程序是非常重要的。谢谢,伙计,正如斯宾塞所说的,我把整数改成了字符串,所以它解决了问题!哈哈。很高兴它有帮助,现在很高兴知道正确的值类型和检查它的范围对于我们的程序非常重要。