У меня проблема в программе, которую я разрабатываю в vb.net.Почему мой panel.controls пуст в одной функции, но не в другой?
У меня есть pnlFoo, который содержит pnlBar. Я использую pnlBar в двух моих функциях. В первом, все идет хорошо, и pnlBar показывает всю метку и числовое значение, которое он имеет в своих элементах управления. Проблема заключается во второй функции, используя ту же панель, она всегда показывает мой pnlBar как пустой, поскольку в нем нет метки.
Вот мой код:
Первая функция:
Private Sub txtItem_TextChanged(sender As Object, e As EventArgs) Handles txtItem.TextChanged
If txtItem.Text <> "" Then
Dim OrderLine As C_OrderLine = New C_OrderLine(C_Item.load(getIdFromString(txtItem.Text)))
OrderLine.labelName.Location = New Point(50, 0 + (30 * pnlBar.Controls.Count()/3)) 'This is a label
OrderLine.quantity.Location = New Point(0, 0 + (30 * pnlBar.Controls.Count()/3)) 'This is a NumericUpDown
OrderLine.labelPrice.Location = New Point(475, 0 + (30 * pnlBar.Controls.Count()/3)) 'This is a label
pnlBar.Controls.Add(OrderLine.labelName)
pnlBar.Controls.Add(OrderLine.quantity)
pnlBar.Controls.Add(OrderLine.labelPrice)
Order.OrderLines.Add(OrderLine) 'OrderLines is a List of OrderLine
txtItem.Text = ""
End If
End Sub
Так что, когда им добавлять вещи в моем pnlBar он работает и pnlBar не пусто.
Моя вторая функция:
Public Sub clickItem(sender As Object, e As EventArgs) ' Happens everytime a click is detected on a labelName
For Each lbl As Label In pnlBar.Controls ' HERE pnlBar is empty
lbl.BackColor = Color.Gray
Next
Dim label As Label = DirectCast(sender, Label)
label.BackColor = Color.Red
btnDelete.Enabled = True 'HERE my button will stay disabled.
End Sub
Так что в этом Funtion, pnlBar пуст и не показывает какой-либо из элементов в нем.
Есть только 2 места, в которых я использую pnlBar в своем коде.
Так что мой вопрос: Почему pnlBar пуст, и моя кнопка не включается? Как я могу это исправить?
Заранее благодарен!
У вас есть обработчик событий для каждого нажатия на кнопку "labelName", которая вызывает 'clickItem' sub? – charliefox2
Да, я просто нашел решение как 30 секунд назад ahah, проблема заключалась в том, что я добавлял обработчика из класса и, я не знаю, по какой причине, в этом случае все мои элементы формы пустые. – Matriac
Чтобы прояснить для кого-либо еще, кто наткнулся на это, решение заключалось в том, чтобы добавить 'Handles labelName.Click' в конец' clickItem', правильно? Итак, это выглядит так: 'Public Sub clickItem (отправитель As Object, e As EventArgs) Обрабатывает labelName.Click' – charliefox2