хранит ссылку на вашу переменную lb в форме (а не только внутри функции).Если вы хотите удалить его, вызовите flowLayoutPanel1.Controls.Remove (lb).
Вы должны добавить обработчик события к метке в том же подпрограмме, где он вызывается для события щелчка правой кнопкой мыши на метке.Внутри этого обработчика должен быть указан вышеупомянутый вызов .Remove.
В качестве альтернативы, так как обработчик события будет передавать объект-отправитель, который будет ссылаться на элемент управления, на котором сработало событие, вы можете просто вызвать. Удалить и передать в отправителя.вам не придется хранить ссылку на метку в этом случае, если она вам не нужна для чего-то другого.
Запрошенный пример
flowLayoutPanel1.Controls.Remove((ToolStripMenuItem) sender);
Отредактированоснова после комментариев
Я изменил событие нажатия кнопки button1 на
private void button1_Click(object sender, EventArgs e)
{
lb = new Label();
lb.Text = "How are You";
lb.Size = new Size(650, Font.Height +10);
flowLayoutPanel1.Controls.Add(lb);
flowLayoutPanel1.SetFlowBreak(lb, true);
lb.BackColor = Color.Wheat;
lb.MouseEnter += labelEntered;
}
, как вы можете видеть, я добавил обработчик события MouseEntered, чтобы перехватить последний ярлык, над которым была наведена мышь.
Я добавил следующую подпрограмму, обработчик которой упоминался выше.Все, что он делает, это записывает последний ярлык, над которым была наведена мышь.
private Label lastLabel;
private void labelEntered(object sender, EventArgs e)
{
lastLabel = (Label)sender;
}
Код кнопки удаления был изменен на это.
public void Remove_Click(object sender, EventArgs e)
{
if (lastLabel != null)
{
flowLayoutPanel1.Controls.Remove(lastLabel);
lastLabel = null;
}
}
Первое, что он проверяетчтобы убедиться, что lastLabel имеет значение, если он удаляет последнюю метку, над которой была наведена мышь, то очищает переменную lastLabel.