System.ArgumentException:参数无效。在文本框中输入值时

时间:2018-01-26 17:35:09

标签: vb.net

我试图创建一个简单的程序,允许您输入一个度数并将拨号填充到该精确程度,然后还显示表盘内的度数。项目构建没有错误,并且将正确显示,直到在文本框中输入值,然后我将在行上得到错误

 g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias

如果我注释掉那一行,它将会下到它下面的一行。这是我第一次使用vb.net,所以我猜测有些东西很小,我只是做错了。我的完整代码是:

 Public Class Form1
        Dim degree As Double
        Dim ge As Graphics
        Private Sub Form2_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
            ge = e.Graphics
            DrawProgress(ge, New Rectangle(150, 25, 400, 400), degree)
        End Sub

        Private Sub DrawProgress(g As Graphics, rect As Rectangle, degree As Double)
            'work out the angles for each arc
            Dim progressAngle = CSng(degree)
            Dim remainderAngle = 360 - progressAngle

            'create pens to use for the arcs
            Using progressPen As New Pen(Color.LightSeaGreen, 2), remainderPen As New Pen(Color.LightGray, 2)
                'set the smoothing to high quality for better output
                g.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
                'draw the blue and white arcs
                g.DrawArc(progressPen, rect, -90, progressAngle)
                g.DrawArc(remainderPen, rect, progressAngle - 90, remainderAngle)
            End Using

            'draw the text in the centre by working out how big it is and adjusting the co-ordinates accordingly
            Using fnt As New Font(Me.Font.FontFamily, 50)
                Dim text As String = degree.ToString
                Dim textSize = g.MeasureString(text, fnt)
                Dim textPoint As New Point(CInt(rect.Left + (rect.Width / 2) - (textSize.Width / 2)), CInt(rect.Top + (rect.Height / 2) - (textSize.Height / 2)))
                'now we have all the values draw the text
                g.DrawString(text, fnt, Brushes.Black, textPoint)
            End Using
        End Sub

        Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
            Dim input_s As String
            input_s = TextBox1.Text
            If (String.IsNullOrEmpty(input_s)) Then
                degree = 0
            Else
                degree = CDec(input_s)
            End If
            DrawProgress(ge, New Rectangle(150, 25, 400, 400), degree)
        End Sub
    End Class

0 个答案:

没有答案