是否有任何代码或我可以在 Visual Basic 2010 中执行的操作与 Visual Basic 6 中的
picture1.Cls
具有相同的功能?
我想清除条形码应用程序项目中的图片框,因此每次我在文本框中更改(删除/添加字符串)时,它总是会转换文本框中的实际字符串。因为现在每次我更改文本时都不想更改已转换的最后一个图像。
这是我的代码:
Private Sub make39()
.
.
.
.
.
.
'PictureBox1.Invalidate()
'PictureBox1.Refresh()
If TextBox1.Text = "" Then Exit Sub
pos = 5
Bardata = UCase(TextBox1.Text)
temp = BC(43) & "0" & temp & BC(43)
'Generate Barcode
For x = 1 To Len(temp)
If x Mod 2 = 0 Then
'SPACE
pos = pos + 1 + (2 * Val(Mid$(temp, x, 1))) + 1
Else
'BAR
For y = 1 To 1 + (2 * Val(Mid$(temp, x, 1)))
'PictureBox1 (pos, 1) - (pos, 58 - 1 * 8)
'Dim pen As New Pen(Color.Black)
'ga.DrawLine (pos, 1)-(pos, 58 - 1 * 8)
ga = PictureBox1.CreateGraphics
ga.DrawLine(Pens.Black, pos, 1, pos, 58 - 1 * 8)
'ga.DrawLine(Pens.Black, New Point(pos, 1), New Point(pos, 58 - 1 * 8))
pos = pos + 1
Next
End If
Next
ga.DrawString(TextBox1.Text, New System.Drawing.Font("Microsoft Sans Serif", 10), Brushes.Red, New System.Drawing.Point(90 + Len(Bardata) * (5 + 1 * 2), 55))
temp = 0
End Sub
正如您在代码中看到的,我一直在尝试使用
PictureBox1.Refresh
和 PictureBox1.Invalidate
来尝试清除我的图片框。另外,在最后一个代码中,我将“temp”定义为 0。我只是希望每次更改文本框时,它总是会转换新的条形码。
感谢您的好意,并为我的英语不好而抱歉
正如我在评论中所说,处理要绘制的控件的
Paint
事件并使用提供的 Graphics
对象。每当您想要执行该绘图代码时,请在控件上调用 Invalidate
以引发 Paint
事件。例如
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
PictureBox1.Invalidate()
End Sub
Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.DrawString(TextBox1.Text, Font, Brushes.Black, PointF.Empty)
End Sub