【问题标题】:How do I programmatically wire up ToolStripButton events in C#?如何在 C# 中以编程方式连接 ToolStripButton 事件?
【发布时间】:2008-09-17 16:03:39
【问题描述】:
我正在以编程方式将 ToolStripButton 项添加到上下文菜单中。
这部分很简单。
this.tsmiDelete.DropDownItems.Add("The text on the item.");
但是,我还需要连接事件,以便在用户单击项目时实际发生一些事情!
我该怎么做?处理点击的方法还需要接收与用户点击的特定 ToolStripButton 相关的某种 id 或对象。
【问题讨论】:
标签:
c#
events
toolstripbutton
toolstripitem
【解决方案1】:
您不能只订阅 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,因此您可以投射它并使用它做任何您需要做的事情。
【解决方案2】:
感谢您对那个安迪的帮助。我现在唯一的问题是 AutoSize 在我添加的 ToolStripButtons 上不起作用!他们都太狭窄了。
这很奇怪,因为它之前工作过。
更新:对于以编程方式创建的 ToolStripButtons,AutoSize 肯定有问题。但是,我找到了解决方案:
- 创建 ToolStripButton。
- 创建一个标签控件并设置字体属性以匹配您的按钮。
- 设置标签文本以匹配您的按钮。
- 将标签设置为 AutoSize。
- 读取标签的宽度并使用它来设置 ToolStripButton 的宽度。
这很hacky,但它可以工作。