如何在 C# 中以编程方式连接 ToolStripButton 事件?
-
01-07-2019 - |
题
我以编程方式将 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!他们都太狭窄了。
这很奇怪,因为它很早就开始工作了。
更新:以编程方式创建的 ToolStripButton 的 AutoSize 肯定有问题。不过,我找到了解决办法:
- 创建 ToolStripButton。
- 创建一个标签控件并设置字体属性以匹配您的按钮。
- 设置标签文本以匹配您的按钮。
- 将标签设置为“自动调整大小”。
- 读取标签的宽度并使用它来设置 ToolStripButton 的宽度。
这很hacky,但是很有效。
不隶属于 StackOverflow