Контекстное меню C# для панели flowlayout

Я использую панель flowlayout для динамического создания меток. Поэтому я хочу использовать меню правой кнопки мыши для этих динамически созданных меток, но contextmenustrip просто распознает панель flowlayoutpanel. Например, я щелкаю правой кнопкой мыши и получаю label.text, но не могу. Есть ли способ для меню правой кнопки мыши для динамических объектов?

  Label addlabel(int i)
    {
        Label L = new Label();
        L.Name = "LBL" + i.ToString();
        L.Text = "LBL" + i.ToString();
        L.ForeColor = Color.Black;
        L.BackColor = Color.Gray;
        L.Width = 94;
        L.Height = 21;
        L.TextAlign = ContentAlignment.MiddleCenter;
        L.Margin = new Padding(5);

        return L;

    }
  for (int i = 0; i < 10; i++)
        {
            Label L = addlabel(i);
            flowLayoutPanel1.Controls.Add(L);
          
        }

person astatin    schedule 07.07.2020    source источник


Ответы (1)


Конечно... просто установите ContextMenuStrip меток при их создании:

L.ContextMenuStrip = contextMenuStrip1;

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

private void editToolStripMenuItem_Click(object sender, EventArgs e)
{
    if (contextMenuStrip1.SourceControl is Label)
    {
        Label lbl = (Label)contextMenuStrip1.SourceControl;
        MessageBox.Show(lbl.Text);
    }
}
person Idle_Mind    schedule 07.07.2020