C#/Windows Forms. События для динамических кнопок

202
23 мая 2018, 18:10

Есть форма в программа, в которой выводится товары подгружаемые с бд. Возник вопрос как можно понять на какую кнопку нажимаю? т.е. для первого товара или же для пятого.

Answer 1

Можно воспользоваться свойством Tag.

Тогда создавая динамически NumericUpDown будем запоминать в это свойство Id товара

NumericUpDown numeric = new NumericUpDown
{
    Name = "numeric" + (item as Product).Id,
    Tag = (item as Product).Id,
    Top = top,
    Left = left,
    Minimum = 0,
    Maximum = 1000
};
numeric.ValueChanged += Numeric_ValueChanged;
numeric.DataBindings.Add("Value", item, "Amount");

Тогда в обработчике изменения значения в NumericUpDown можно сделать так

private void Numeric_ValueChanged(object sender, EventArgs e)
{
    var numeric = sender as NumericUpDown;
    if (numeric == null) return;
    //ищем по Id в Tag нужный товар
    var nameProduct = _bsProducts
                                .OfType<Product>()
                                .First(p => p.Id == (int)numeric.Tag);
    _message = $"Количество изменено у: {nameProduct.Name} на {numeric.Value}";
}

Пример можно скачать здесь

READ ALSO
Программно изменить значение выбранной строки dataGridView

Программно изменить значение выбранной строки dataGridView

Есть две формыВ первой находится dataGridView, во второй в textBox передаются значения ячеек выбранной строки, который затем изменяет пользователь

171
Проблема с установкой пакетов Xamarin

Проблема с установкой пакетов Xamarin

Скачал с гита проект на xamarin, попытался собрать получил ошибку :

169
Как ускорить executemany в Python при INSERT IGNORE (mysql)?

Как ускорить executemany в Python при INSERT IGNORE (mysql)?

Вставляю в базу большое количество значений (~5 млн строк, пакетами по 5000 строк) через executemany

224