Vb.net 如何创建多个标签
我不熟悉“编码/编程”。我正在尝试制作一个功能性的程序——我称之为“支付点”。这就像那些超市程序,他们登记你要买的东西所以我需要创建一些标签来注册产品。 我的守则如下:Vb.net 如何创建多个标签,vb.net,Vb.net,我不熟悉“编码/编程”。我正在尝试制作一个功能性的程序——我称之为“支付点”。这就像那些超市程序,他们登记你要买的东西所以我需要创建一些标签来注册产品。 我的守则如下: Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ''When i click the button If CantidadVer1.Text = 0 Then ''this verifies how ma
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ''When i click the button
If CantidadVer1.Text = 0 Then ''this verifies how many Labels i have created
CantidadVer1.Text = +1 ''this updates the verification
Dim lbl1 As New Label ''this creates the labels
lbl1.Size = New System.Drawing.Size(159, 23)
lbl1.Text = (Product.Text) ''product.text is a TextBox
lbl1.Location = New System.Drawing.Point(12, 80 + 20) '' i add 20 more everytime i create a label
Me.Controls.Add(lbl1)
ElseIf CantidadVer1.Text = 2 Then ''at this point it creates the label but "crashes" (It dosent work anymore)
CantidadVer1.Text = +1
Dim lbl2 As New Label
lbl2.Size = New System.Drawing.Size(159, 23)
lbl2.Text = (Product.Text)
lbl2.Location = New System.Drawing.Point(12, 80 + 40)
Me.Controls.Add(lbl2)
ElseIf CantidadVer1.Text = 2 Then
CantidadVer1.Text = +1
Dim lbl3 As New Label
lbl3.Size = New System.Drawing.Size(159, 23)
lbl3.Text = (Product.Text)
lbl3.Location = New System.Drawing.Point(12, 80 + 60)
Me.Controls.Add(lbl3)
ElseIf CantidadVer1.Text = 3 Then
CantidadVer1.Text = +1
Dim lbl4 As New Label
lbl4.Size = New System.Drawing.Size(159, 23)
lbl4.Text = (Product.Text)
lbl4.Location = New System.Drawing.Point(12, 80 + 80)
Me.Controls.Add(lbl4)
ElseIf CantidadVer1.Text = 4 Then
CantidadVer1.Text = +1
Dim lbl4 As New Label
lbl4.Size = New System.Drawing.Size(159, 23)
lbl4.Text = (Product.Text)
lbl4.Location = New System.Drawing.Point(12, 80 + 100)
Me.Controls.Add(lbl4)
End If
End Sub
所以我执行它,然后它创建两个标签,然后崩溃
它应该创建5个标签
有没有更简单的方法来创建多个标签而不使程序崩溃?在您的代码中,我每次只看到创建一个标签。我认为代码不会崩溃。请记住,在IF块中,如果第一部分中满足了条件,它将跳过所有后续的ElseIf条件 通过一些研究,您会发现最好的选择是使用
DataGridView
而不是一堆标签。您可以简单地为每个项目添加一个新行。假设您有一个名为DGV_Product的datagridview,其中有3个文本框列,分别表示产品、数量和价格:
Dim price as Double = 1.99
Dim product as String = "Apple"
Dim qty as integer = 3
DGV_Product.Rows.Add(New String() {product, Cstr(qty), CStr(price)})
这将添加一行,其中包含“Apple,3,1.99”
但如果您坚持使用标签,这会更好:
1) 在类级别设置以下变量
Dim lbl_pos as integer
2) 在表单加载事件处理程序中,将值设置为比第一个标签的显示位置小20:
lbl_pos = 80 ' gathered from your code
3) 然后在按钮的click事件处理程序中,在添加新标签之前,将新标签的位置增加20
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
lbl_pos = lbl_pos + 20 'increment the position
Dim lbl as New Label
With lbl
.Text = "Your Text"
.Location = New Point(10,lbl_pos) '(left position, top position)
' And so Forth
End With
me.controls.add(lbl)
End Sub
使用这种方法,您可以添加任意多的标签,而不需要一堆If-ElseIf块
我希望您重新考虑您的方法,转而使用
DataGridView
,因为它更实用,您可以随意添加行。在您的代码中,我每次只看到创建一个标签。我认为代码不会崩溃。请记住,在IF块中,如果第一部分中满足了条件,它将跳过所有后续的ElseIf条件
通过一些研究,您会发现最好的选择是使用DataGridView
而不是一堆标签。您可以简单地为每个项目添加一个新行。假设您有一个名为DGV_Product的datagridview,其中有3个文本框列,分别表示产品、数量和价格:
Dim price as Double = 1.99
Dim product as String = "Apple"
Dim qty as integer = 3
DGV_Product.Rows.Add(New String() {product, Cstr(qty), CStr(price)})
这将添加一行,其中包含“Apple,3,1.99”
但如果您坚持使用标签,这会更好:
1) 在类级别设置以下变量
Dim lbl_pos as integer
2) 在表单加载事件处理程序中,将值设置为比第一个标签的显示位置小20:
lbl_pos = 80 ' gathered from your code
3) 然后在按钮的click事件处理程序中,在添加新标签之前,将新标签的位置增加20
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
lbl_pos = lbl_pos + 20 'increment the position
Dim lbl as New Label
With lbl
.Text = "Your Text"
.Location = New Point(10,lbl_pos) '(left position, top position)
' And so Forth
End With
me.controls.add(lbl)
End Sub
使用这种方法,您可以添加任意多的标签,而不需要一堆If-ElseIf块
我希望您重新考虑您的方法,改用
DataGridView
,因为它更实用,您可以随意添加任意多的行,而无需麻烦。您的代码中有错误。。线路
ElseIf CantidadVer1.Text = 2 Then ''at this point it creates the label but "crashes" (It dosent work anymore
应该是
ElseIf CantidadVer1.Text = 1 Then ''at this point it creates the label but "crashes" (It dosent work anymore)
您的代码中有一个错误。。线路
ElseIf CantidadVer1.Text = 2 Then ''at this point it creates the label but "crashes" (It dosent work anymore
应该是
ElseIf CantidadVer1.Text = 1 Then ''at this point it creates the label but "crashes" (It dosent work anymore)
如果不在开头设置CantidadVer1的值。其值“”不是0。因此,如果您不将0放入CantidadVer1.text,则将是错误 第一个可能是这样的
如果CantidadVer1.Text=”“或CantidadVer1.Text=0,则如果未在开始处设置CantidadVer1的值,则。其值“”不是0。因此,如果您不将0放入CantidadVer1.text,则将是错误 第一个可能是这样的
如果CantidadVer1.Text=”“或CantidadVer1.Text=0,则您的PTP设计不完善。这里的所有答案都是试图根据你所做的事情来解决你的问题 但是你的模型是基于你的观点。例如,您是否计划如何检索所有添加的产品?历史就在你的视野之内:祝你好运 这就是为什么我建议查看您的设计。例如:
- 使用代码隐藏中的列表保存数据。您的按钮单击应该只执行此操作(通过一些验证)
- 在视图中使用中继器。把那个中继器绑定到你的列表上:瞧。您的中继器将负责创建与所有添加产品对应的所有标签
- 使用代码隐藏中的列表保存数据。您的按钮单击应该只执行此操作(通过一些验证)
- 在视图中使用中继器。把那个中继器绑定到你的列表上:瞧。您的中继器将负责创建与所有添加产品对应的所有标签
ElseIf
应该是ElseIf CantidadVer1。Text=1然后
您是否也希望CantidadVer1.Text=+1
会增加文本字段?当程序崩溃时您得到的确切异常是什么?您的第一个ElseIf
应该是ElseIf CantidadVer1.Text=1那么您是否也希望CantidadVer1.Text=+1
会增加文本字段?