如何创建多个标签

时间:2018-07-10 22:21:02

标签: vb.net

我是“编码/编程”的新手。我正在尝试制作一个功能程序-我称其为“付款要点”。就像那些超市程序在其中注册要购买的东西。 所以我需要创建一些标签来注册产品。

我拥有的代码:

while True:
    p = raw_input("Enter the value':")
    if value == '1':
        break
  

所以我执行它,然后它创建2个标签,然后崩溃。

应该创建5个标签。

有没有更简单的方法来创建多个标签而又不会导致程序崩溃?

4 个答案:

答案 0 :(得分:2)

在您的代码中,每次只会看到一个创建的标签。我认为代码不会崩溃。请记住,在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)在表单的Load事件处理程序中,将该值设置为比您希望第一个标签显示的位置小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,因为它更实用,并且您可以随意添加任意多的行。

答案 1 :(得分:1)

您的代码中有错误..行

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)

答案 2 :(得分:0)

如果您一开始没有设置CantidadVer1的值。它的值=“”不是0。因此,如果不将0放入CantidadVer1.text,则将是bug。

第一个,也许像这样 如果CantidadVer1.Text =“”或CantidadVer1.Text = 0那么

答案 3 :(得分:0)

您的PTP是设计欠佳的。此处的所有答案都是通过根据您所做的工作来解决您的问题。

但是您的模型有点根据您的观点而定。例如,您是否计划了如何检索所有添加的产品?历史就是您的观点:祝您好运。

这就是为什么我建议您审查您的设计的原因。例如:

  • 在代码后面使用列表来保存数据。您的button_click仅应执行此操作(并进行一些验证)。
  • 在您的视图中使用中继器。将该转发器绑定到您的List,瞧。您的中继器将负责创建与所有已添加产品相对应的所有标签。