Я программно добавляю элементы ToolStripButton в контекстное меню.
Эта часть проста.
this.tsmiDelete.DropDownItems.Add("The text on the item.");
Однако мне также нужно связать события, чтобы, когда пользователь щелкает элемент, что-то действительно происходило!
Как мне это сделать? Метод, обрабатывающий щелчок, также должен получить какой-то идентификатор или объект, который относится к конкретному ToolStripButton, по которому щелкнул пользователь.





Не могли бы вы просто подписаться на событие Click? Что-то вроде этого:
ToolStripButton btn = new ToolStripButton("The text on the item.");
this.tsmiDelete.DropDownItems.Add(btn);
btn.Click += new EventHandler(OnBtnClicked);
И OnBtnClicked будет объявлен так:
private void OnBtnClicked(object sender, EventArgs e)
{
ToolStripButton btn = sender as ToolStripButton;
// handle the button click
}
Отправителем должен быть ToolStripButton, чтобы вы могли использовать его и делать с ним все, что вам нужно.
Спасибо за помощь с этим, Энди. Моя единственная проблема сейчас в том, что AutoSize не работает с ToolStripButtons, которые я добавляю! Они все слишком узкие.
Это довольно странно, потому что раньше работало.
Обновление: определенно что-то не так с AutoSize для программно созданных ToolStripButtons. Однако я нашел решение:
Это взломано, но работает.