Получение суммы текстового поля из всех динамически генерируемых пользовательских элементов управления

Я хочу добавить цену (метку) всего динамически генерируемого пользовательского элемента управления и установить метку на winform, как я могу это сделать? нажав кнопку ok на winform, я попробовал этот код, но он не добавил метки, и результат всегда равен 0. Вот изображение: https://imgur.com/a/ViPGt и это мой код:

 private void add_Click(object sender, EventArgs e)
    {
        double g = 0;
        foreach (Control ctrl in Controls)
        {
            if (ctrl is DynaItems)
            {
                var myCrl = ctrl as DynaItems;
                g += Convert.ToInt32(myCrl.price.Text);
            }
        }
        textBox1.Text = g.ToString();
    }

1 ответ

Решение

Я думаю, что это может быть связано с тем, что вы хотите удвоить, когда вы переходите на Int32. Попробуйте этот код и в то же время проверьте правильность свойства "Контроль цен".

private void add_Click(object sender, EventArgs e)
{
    double g = 0;

    // Controls.OfType will automatically find your DynaItems controls and cast them for you
    foreach (DynaItems dynaItem in Controls.OfType<DynaItems>())
    {
        // Breakpoint here and check the value of dynaItem.price.Text
        g += double.Parse(dynaItem.price.Text);
    }

    textBox1.Text = g.ToString();
}
Другие вопросы по тегам