我是“编码/编程”的新手。我正在尝试制作一个功能程序-我称其为“付款要点”。就像那些超市程序在其中注册要购买的东西。 所以我需要创建一些标签来注册产品。
我拥有的代码:
while True:
p = raw_input("Enter the value':")
if value == '1':
break
所以我执行它,然后它创建2个标签,然后崩溃。
应该创建5个标签。
有没有更简单的方法来创建多个标签而又不会导致程序崩溃?
答案 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是设计欠佳的。此处的所有答案都是通过根据您所做的工作来解决您的问题。
但是您的模型有点根据您的观点而定。例如,您是否计划了如何检索所有添加的产品?历史就是您的观点:祝您好运。
这就是为什么我建议您审查您的设计的原因。例如: