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

#c# #winforms

Вопрос:

У меня есть кнопка, которую я добавил программно, и я хочу хранить определенную уникальную информацию с каждой кнопкой. Я сохранил имя и текст, но есть ли способ сохранить другую строку для последующего доступа. Ниже приведен код для моей кнопки и события щелчка.

     for (int i = bankaccountsDatagridview.Rows.Count - 1; i >= 0; i--)
    {
                    string buttonName = "individualDepartmentBtn-"   i;
                    FontAwesome.Sharp.IconButton individualDepartmentBtn = new FontAwesome.Sharp.IconButton();
                    individualDepartmentBtn.BackColor = System.Drawing.Color.White;
                    individualDepartmentBtn.Cursor = System.Windows.Forms.Cursors.Hand;
                    individualDepartmentBtn.Dock = System.Windows.Forms.DockStyle.Top;
                    individualDepartmentBtn.FlatAppearance.BorderSize = 0;
                    individualDepartmentBtn.FlatAppearance.MouseDownBackColor = System.Drawing.Color.Silver;
                    individualDepartmentBtn.FlatAppearance.MouseOverBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
                    individualDepartmentBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
                    individualDepartmentBtn.Flip = FontAwesome.Sharp.FlipOrientation.Normal;
                    individualDepartmentBtn.Font = new System.Drawing.Font("Roboto", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
                    individualDepartmentBtn.ForeColor = System.Drawing.Color.DimGray;
                    individualDepartmentBtn.IconChar = FontAwesome.Sharp.IconChar.None;
                    individualDepartmentBtn.IconColor = System.Drawing.Color.DimGray;
                    individualDepartmentBtn.IconSize = 25;
                    individualDepartmentBtn.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
                    individualDepartmentBtn.Margin = new System.Windows.Forms.Padding(10);
                    individualDepartmentBtn.Padding = new System.Windows.Forms.Padding(30, 0, 0, 0);
                    individualDepartmentBtn.Name = bankaccountsDatagridview.Rows[i].Cells[1].Value.ToString();
                    individualDepartmentBtn.Rotation = 0D;
                    individualDepartmentBtn.Size = new System.Drawing.Size(192, 30);
                    individualDepartmentBtn.TabIndex = 1;
                    individualDepartmentBtn.Text = bankaccountsDatagridview.Rows[i].Cells[1].Value.ToString();
                    individualDepartmentBtn.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
                    individualDepartmentBtn.UseVisualStyleBackColor = false;
                    navigationPanel.Controls.Add(individualDepartmentBtn);
                    individualDepartmentBtn.MouseDown  = new System.Windows.Forms.MouseEventHandler(individualBankBtnDown);
   }
 

Нажмите Событие:

     private void individualBankBtnDown(object sender, MouseEventArgs e)
    {
        bankTitle = ((FontAwesome.Sharp.IconButton)sender).Name.ToString();
    }
 

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

1. Вы могли бы воспользоваться этой Tag собственностью.

2. @stuartd Сразу после выхода из stackoverflow я нашел свойство тега. Большое вам спасибо за ваше предложение!

Ответ №1:

Вы можете воспользоваться этой Tag недвижимостью. Например:

 individualDepartmentBtn.Tag = "My String";
 

Вы можете хранить внутри любой объект Tag , а не только строки.

Обратите внимание, что вы также можете использовать var ключевое слово и инициализатор объекта, чтобы сделать ваш код немного более читабельным:

 var individualDepartmentBtn = new FontAwesome.Sharp.IconButton
{
    BackColor = System.Drawing.Color.White,
    Cursor = System.Windows.Forms.Cursors.Hand,
    Dock = System.Windows.Forms.DockStyle.Top,
    ...
};
 

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

1. Огромное спасибо. Я использовал свойство тегов, и оно работает как шарм.