如何以编程方式在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肯定有问题。但是,我发现了一个解决方案:
- 创建ToolStripButton。
- 创建一个标签控件并设置字体属性以匹配您的按钮。
- 设置标签的文字以匹配您的按钮。
- 将标签设置为AutoSize。
- 读取标签的宽度并使用它来设置ToolStripButton的宽度。
这是hacky,但它的工作原理。