如何以编程方式在C#中连接ToolStripButton事件?

时间:2008-09-17 16:03:39

标签: c# events toolstripbutton toolstripitem

我正在以编程方式将ToolStripButton项添加到上下文菜单中。

这部分很容易。

this.tsmiDelete.DropDownItems.Add("The text on the item.");

但是,我还需要连接事件,以便当用户点击该项时实际发生的事情!

我该怎么做?处理点击的方法还需要接收某种与用户点击的特定ToolStripButton相关的id或对象。

2 个答案:

答案 0 :(得分:3)

难道你不能订阅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,因此您可以投射它并做任何您需要做的事情。

答案 1 :(得分:0)

感谢你对Andy的帮助。我现在唯一的问题是AutoSize不能处理我正在添加的ToolStripButtons!他们都太狭隘了。

这很奇怪,因为它提前工作了。


更新:对于以编程方式创建的ToolStripButtons,AutoSize肯定存在问题。但是,我找到了一个解决方案:

  1. 创建ToolStripButton。
  2. 创建标签控件并设置字体属性以匹配您的按钮。
  3. 设置标签文字以匹配您的按钮。
  4. 将标签设置为AutoSize。
  5. 读取标签的宽度,并使用它来设置ToolStripButton的宽度。
  6. 这很黑,但它确实有效。