2

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

那部分很容易。

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

但是,我还需要连接事件,以便在用户单击项目时实际发生一些事情!

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

4

2 回答 2

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,因此您可以投射它并使用它做任何您需要做的事情。

于 2008-09-17T16:12:41.580 回答
0

感谢您对安迪的帮助。我现在唯一的问题是 AutoSize 在我添加的 ToolStripButtons 上不起作用!他们都太狭窄了。

这很奇怪,因为它更早地工作。


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

  1. 创建工具条按钮。
  2. 创建一个标签控件并设置字体属性以匹配您的按钮。
  3. 设置标签的文本以匹配您的按钮。
  4. 将标签设置为 AutoSize。
  5. 读取标签的宽度并使用它来设置 ToolStripButton 的宽度。

这是hacky,但它的工作原理。

于 2008-09-17T16:31:43.687 回答