Как создать отдельные функции для добавленных вручную (зацикленных) элементов управления

#c# #windows #forms #button #panel

#c# #Windows #формы #кнопка #панель

Вопрос:

Итак, в основном я использовал цикл foreach для добавления одинаковых элементов управления макетом. Теперь я хочу создать, например, простые и — функции. 2 Кнопки 1 текстовое поле с увеличением и уменьшением. Теперь я столкнулся с проблемой, как только я создаю эту функциональность, все поля получают одну и ту же информацию. Если я увеличу на панели 1 «количество» на другом, оно все равно будет соответствовать последнему количеству.

Мой вопрос был бы в том, как заставить его функционировать отдельно. Номер Int объявляется глобально.

         Button plus = new Button();
        plus.BackColor = System.Drawing.Color.White;
        plus.FlatAppearance.BorderColor = System.Drawing.Color.White;
        plus.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
        plus.Font = new System.Drawing.Font("Arial Rounded MT Bold", 16.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        plus.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(175)))), ((int)(((byte)(241)))));
        plus.Location = new System.Drawing.Point(96, 84);
        plus.Name =  number.ToString();
        plus.Size = new System.Drawing.Size(30, 29);
        plus.TabIndex = 15;
        plus.Text = " ";
        plus.UseVisualStyleBackColor = false;

        Button minus = new Button();
        minus.BackColor = System.Drawing.Color.White;
        minus.FlatAppearance.BorderColor = System.Drawing.Color.White;
        minus.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
        minus.Font = new System.Drawing.Font("Arial Rounded MT Bold", 13.8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
        minus.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(175)))), ((int)(((byte)(241)))));
        minus.ImageAlign = System.Drawing.ContentAlignment.TopCenter;
        minus.Location = new System.Drawing.Point(130, 84);
        minus.Name = number.ToString();
        
        minus.Size = new System.Drawing.Size(30, 29);
        minus.TabIndex = 16;
        minus.Text = "-";
        minus.UseVisualStyleBackColor = false;

        TextBox t = new TextBox();
        t.Location = new System.Drawing.Point(165, 84);
        t.Multiline = true;
        t.Name = number.ToString();

        plus.Click  = (sender, e) => plus_Click(sender, e,t);
        minus.Click  = (sender, e) => minus_Click(sender, e, t);

protected void plus_Click(object sender, EventArgs e, TextBox t)
{
    Button plus = sender as Button;
    count  = 1;
    t.Text = count.ToString();
}
    
protected void minus_Click(object sender, EventArgs e, TextBox t)
{
        Button minus = sender as Button;
        count -= 1;

        if (count <= 0)
            count = 0;

        t.Text = count.ToString();
}             
  

Комментарии:

1. Создайте пользовательский элемент управления, содержащий две кнопки и текстовое поле. Добавьте экземпляры этого пользовательского элемента управления в свои контейнеры (панели или что-то еще). Вы можете добавить общедоступное свойство в UC, которое возвращает текущее количество.

2. @Jimi Можешь уточнить? я новичок в этом мире, я пробовал гуглить, но это не очень помогло.

3. О чем вы гуглили? В любом случае, откройте меню проекта, выберите Add UserControl... , оно создаст конструктор для вашего пользовательского элемента управления (похожий на конструктор форм). Добавьте две кнопки и текстовое поле и выполняйте свои операции там. Добавьте общедоступное свойство в свой UC, которое возвращает текущее count значение для этого UC. Скомпилируйте. На панели инструментов выберите свой UC и добавьте столько копий, сколько вам нужно, в свою панель, Форму или другой контейнер. Вот и все. Если затем вы хотите узнать, каково текущее значение конкретного UC, прочитайте значение, возвращаемое добавленным вами общедоступным свойством.

4. Но я добавляю элементы управления на панель вручную (программно). Это пустая панель перед запуском приложения.

5. Вы можете добавить свои пользовательские элементы управления вручную таким же образом.