我以编程方式将 ToolStripButton 项添加到上下文菜单中。
那部分很容易。
this.tsmiDelete.DropDownItems.Add("The text on the item.");
但是,我还需要连接事件,以便在用户单击项目时实际发生一些事情!
我该怎么做呢?处理单击的方法还需要接收与用户单击的特定 ToolStripButton 相关的某种 id 或对象。
我以编程方式将 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 肯定有问题。但是,我找到了解决方案:
这是hacky,但它的工作原理。