Как мне программно подключить события ToolStripButton в C #?

StackOverflow https://stackoverflow.com/questions/84842

Вопрос

Я программно добавляю элементы 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.Тем не менее, я нашел решение:

  1. Создайте ToolStripButton.
  2. Создайте элемент управления label и задайте свойства шрифта в соответствии с вашей кнопкой.
  3. Настройте текст надписи так, чтобы он соответствовал вашей кнопке.
  4. Установите для метки автоматический размер.
  5. Прочитайте ширину метки и используйте ее для установки ширины кнопки ToolStripButton.

Это банально, но это работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top