Как мне программно подключить события ToolStripButton в C #?
-
01-07-2019 - |
Вопрос
Я программно добавляю элементы 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, чтобы вы могли использовать ее и делать с ней все, что вам нужно.
Другие советы
Спасибо за твою помощь с этим, Энди.Моя единственная проблема сейчас заключается в том, что автоматический размер не работает с ToolStripButtons, которые я добавляю!Все они слишком узкие.
Это довольно странно, потому что раньше это работало.
Обновить:Определенно, что-то не так с автоматическим изменением размера для программно созданных ToolStripButtons.Тем не менее, я нашел решение:
- Создайте ToolStripButton.
- Создайте элемент управления label и задайте свойства шрифта в соответствии с вашей кнопкой.
- Настройте текст надписи так, чтобы он соответствовал вашей кнопке.
- Установите для метки автоматический размер.
- Прочитайте ширину метки и используйте ее для установки ширины кнопки ToolStripButton.
Это банально, но это работает.