如何以编程方式连接C#中的ToolStripButton事件?
时间:2020-03-05 18:59:15 来源:igfitidea点击:
我正在以编程方式将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,这样我们就可以进行投射并执行我们需要执行的任何操作。
回答
感谢我们对Andy的帮助。我现在唯一的问题是AutoSize在我要添加的ToolStripButtons上不起作用!他们都太狭窄了。
这很奇怪,因为它可以更早地工作。
更新:通过编程创建的ToolStripButtons的AutoSize绝对存在问题。但是,我找到了一个解决方案:
- 创建ToolStripButton。
- 创建一个标签控件并设置字体属性以匹配按钮。
- 设置标签文本以匹配按钮。
- 将标签设置为"自动调整大小"。
- 读取标签的宽度,并使用它来设置ToolStripButton的宽度。
这很hacky,但是可以用。