如何以编程方式在C#中连接ToolStripButton事件?

问题描述:

我正在以编程方式将ToolStripButton项目添加到上下文菜单。如何以编程方式在C#中连接ToolStripButton事件?

这部分很简单。

this.tsmiDelete.DropDownItems.Add("The text on the item."); 

但是,我还需要连接事件,以便当用户单击该项目实际发生的事情!

我该怎么做?处理点击的方法还需要接收某种与用户点击的特定ToolStripButton相关的id或对象。

难道你只是订阅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!他们太狭窄了。

这很奇怪,因为它工作得更早。


更新:对于以编程方式创建的ToolStripButtons,AutoSize肯定有问题。但是,我发现了一个解决方案:

  1. 创建ToolStripButton。
  2. 创建一个标签控件并设置字体属性以匹配您的按钮。
  3. 设置标签的文字以匹配您的按钮。
  4. 将标签设置为AutoSize。
  5. 读取标签的宽度并使用它来设置ToolStripButton的宽度。

这是hacky,但它的工作原理。